gpt4 book ai didi

node.js - Mongoose upsert重复键错误

转载 作者:可可西里 更新时间:2023-11-01 09:10:57 28 4
gpt4 key购买 nike

我正在尝试使用 Mongoose 进行更新插入,但我收到了应该触发更新插入的键的重复键错误。

架构:

"resource": {type: Schema.ObjectId, ref: "Resource"},                       
"skill": {type: Schema.ObjectId, ref: "Skill"},
"level": {type: Number, min: 1, max: 5}

.index({skill: 1, resource: 1}, {unique: true});

然后我打电话:

    //self is a Resource instance
ResourceSkillLevel.update({
resource: self._id,
skill: skill._id,
level: level
}, {$set: {level: level}}, {upsert: true}, cb);

如果 (resource, skill) 不存在,则此调用工作正常并正确创建 ResourceSkillLevel 条目。但是,当我再次调用它时,我得到了 duplicate key error index。列出的重复键是元组资源/技能键。为什么它在找到重复项时不更新?

最佳答案

您在 update 查询条件参数中包含了 level,因此如果它不匹配现有记录,它将尝试创建一个新文档,该文档将仅跨越 skillresource 的唯一索引失败。

尝试将您的更新更改为:

ResourceSkillLevel.update({                                           
resource: self._id,
skill: skill._id
}, {$set: {level: level}}, {upsert: true}, cb);

关于node.js - Mongoose upsert重复键错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18111141/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com