javascript - Sequelize 5 findOrCreate with undelete inside loop
问题描述
我在 Postgres 中有一个简单的用户表,如下所示:
Column | Type |
-----------+-----------------------------+
id | integer |
name | text |
email | text |
nickname | text |
deletedAt | timestamp without time zone |
Indexes:
"user_pkey" PRIMARY KEY, btree (id)
"unique_user" UNIQUE CONSTRAINT, btree (name, email)
当我在我的 API 上收到包含用户数据的请求时,我想创建新用户。如果用户被软删除,那么我想取消删除它们,如果用户已经存在,那么什么也不做。
const users = [];
_.each(req.body.users, (user) => {
const u = Users.findOrCreate({
where: {
name: user.name,
email: user.email
},
defaults: {
name: user.name,
email: user.email,
nickname: user.nickname
},
paranoid: false,
transaction
}).spread(async (returnedUser, created) => {
if (!created) {
if (returnedUser.deletedAt) {
await returnedUser.update({ deletedAt: null, transaction });
await returnedUser.save({ transaction });
}
}
})
users.push(u);
});
除了取消删除部分之外,这一切似乎都有效。似乎没有抛出错误,但匹配的软删除用户仍然被删除。我正在使用续集 5。
解决方案
推荐阅读
- javascript - 仅具有特定字段的数组解构+扩展语法?
- python - 从表单输入中删除特定字母
- angularjs - Angular返回未定义的值
- c# - 比较两个字符串数组并返回相同的值
- python - Python:FQDN 像 `hostname --fqdn`?
- javascript - 为什么我不能在 package.json 脚本中设置环境值
- kubernetes - minikube 在 win10 上获取带有标签选择器“k8s-app=kube-proxy”的 Pod 时出错
- macos - 如何在 Mac 10.10 上使用包含非 ascii 字符的挂载点挂载目录?
- c++ - 每次调用方法时递增变量
- azure - Azure Http 连接在 5 分钟后中断