例如,如果我有这个架构
var userSchema = mongoose.Schema({
username: String,
email: String,
password: String,
_todo: [{ type: mongoose.Schema.Types.ObjectId, ref: 'Todo'}]
});
我希望用户名是唯一的密钥,其他用户无法复制。我怎么能这样做?
答案 0 :(得分:8)
您可以使用unique
属性添加约束。这也将为您的集合添加字段的“唯一”索引:
var userSchema = mongoose.Schema({
username: { type: String, unique: true },
email: String,
password: String,
_todo: [{ type: mongoose.Schema.Types.ObjectId, ref: 'Todo'}]
});
答案 1 :(得分:0)
我遇到了同样的问题。但是无法通过公认的答案来解决。
因为我的示例非常简单,只需将name
设为唯一。
var FoolSchema = Schema({
name: {
type: String,
unique: true,
index: true,
required: true
}
})
我每次都可以保存重复的名称。
然后我找到此链接: https://mongoosejs.com/docs/faq.html#unique-doesnt-work
解决方案是createIndex
的{{1}},而不是猫鼬。
mongoDB
和mongo
use yourdbName
(您看不到db.foos.getIndexes()
)"unique" : true,
db.foos.createIndex( { "name": 1 }, { unique: true } )
。希望它可以帮助某人。