我试图让MongoDB根据其索引检测重复值.我认为这在MongoDB中是可能的,但是通过Mongoose包装器似乎已经破坏了.对于这样的事情:
User = new Schema ({
email: {type: String, index: {unique: true, dropDups: true}}
})
Run Code Online (Sandbox Code Playgroud)
我可以使用相同的电子邮件保存2个用户.该死.
这里也表达了同样的问题:https://github.com/LearnBoost/mongoose/issues/56,但那个线程已经老了,无处可去.
现在,我手动调用数据库来查找用户.由于"电子邮件"已编入索引,因此该电话费用并不昂贵.但让它本地处理仍然是件好事.
有人有解决方案吗?
我对 MongoDb / Mongoose 相当陌生,更习惯于 SQL Server 或 Oracle。
我有一个相当简单的事件架构。
EventSchema.add({
pkey: { type: String, unique: true },
device: { type: String, required: true },
name: { type: String, required: true },
owner: { type: String, required: true },
description: { type: String, required: true },
});
Run Code Online (Sandbox Code Playgroud)
我正在查看Mongoose Indexes,它显示了两种方法,我使用了字段定义。
我还有一个非常简单的 API,它接受 POST 并在此集合上调用 create 以插入记录。
我编写了一个测试,检查是否不应该插入具有相同 pkey 的记录,以及 unique:true 是否正在运行。我已经有一组我读入数组的事件,所以我只是再次发布这些事件中的第一个,看看会发生什么,我预计 mongo DB 会抛出 E11000 重复键错误,但这并没有发生。
var url = 'api/events';
var evt = JSON.parse(JSON.stringify(events[0]));
// POST'ed new record won't …Run Code Online (Sandbox Code Playgroud)