我正在尝试找出如何强制执行不是索引的字段上的唯一性。
我在这里看到了类似的问题,但是使用 dropDups: true 的答案被提到已经过时。
强制对一个字段进行唯一性约束的正确方法是什么?
const users = new Schema({
email: { type: String, required: true , unique: true},
...});
我正在尝试找出如何强制执行不是索引的字段上的唯一性。
我在这里看到了类似的问题,但是使用 dropDups: true 的答案被提到已经过时。
强制对一个字段进行唯一性约束的正确方法是什么?
const users = new Schema({
email: { type: String, required: true , unique: true},
...});
var mongoose = require('mongoose');
var uniqueValidator = require('mongoose-unique-validator');
// Define your schema as normal.
var userSchema = mongoose.Schema({
username: { type: String, required: true, unique: true },
email: { type: String, index: true, unique: true, required: true },
password: { type: String, required: true }
});
// Apply the uniqueValidator plugin to userSchema.
userSchema.plugin(uniqueValidator);
如果你这样做,它将无法用于唯一键验证。
var userSchema = new Schema({
name : String,
username : {
type : String,
required : true,
index : {
unique : true,
dropDups : true
}
});
所以你现在正在以正确和最佳的方式进行操作,就像这样做
使用以下命令从数据库中删除集合
> db.<collection name>.drop()
然后重新启动服务器,通过以下方式进行检查。
var userSchema = new Schema({
name : String,
username : {
type : String,
required : true,
unique : true
});