0
db.collection("resource").update({name: name}, {
name: name,
type: type
}, {
upsert: true
}
我通过名称区分文档。如果存在相同的文件,我不添加文件。但是我想提醒用户说“它已经存在,操作失败”我该如何实现它?Mongodb重复错误发生器
db.collection("resource").update({name: name}, {
name: name,
type: type
}, {
upsert: true
}
我通过名称区分文档。如果存在相同的文件,我不添加文件。但是我想提醒用户说“它已经存在,操作失败”我该如何实现它?Mongodb重复错误发生器
这听起来像你想插入文件,不更新或插入文件。
1:提前在resource.name
上添加唯一索引。
db.resouces.createIndex({ name: 1 }, { unique: true })
重要提示:请做一次,而不是每次请求。
请参阅mongodb create index docs。使用insert
而不是update + upsert
。
听起来好像你想要的文件实际上是insert
,并且如果有重复的密钥会得到一个错误。
您将获得第二个插入重复键错误。错误代码11000
。
3:在javascript中使用promise-try-catch。
做错误检查的代码如下所示:
var db = require("mongojs")(DATABASE_URL, [ "resources" ])
var duplicateKey = function (err) {
return err.code == "11000"
}
db.resources.insert({ name: name })
.then(function() {
// success!
})
.catch(duplicateKey, function() {
// sorry! name is taken
})
我知道,第二行会抛出一个错误,但我该如何处理错误?我想警告用户说“它已经存在,操作失败” – user3836430
你必须检查应用程序代码。 – AJcodez