gpt4 book ai didi

node.js - Mongoose 中的唯一索引不起作用

转载 作者:太空宇宙 更新时间:2023-11-03 22:47:28 25 4
gpt4 key购买 nike

我正在尝试在 Mongoose 中为字段(“event_key”)创建唯一索引,并且如果我尝试创建重复条目,我希望 mongodb 不保存。我查看了文档,似乎我需要做的就是在架构中设置 index: {unique: true} ,但我似乎无法让它工作。我已经尝试了几种不同的排列,但仍然无法使其工作。

此外,required: true 似乎也不起作用,因为即使我不传入 event_key,我也可以保存条目。我可能错过了一些非常愚蠢的东西,想知道是否有人可以提供帮助?

架构

var WistiaAnalyticSchema = new Schema({
event_key: {type: String, required: true, index: {unique: true}},
visitor_key: String,
created: {type: Date, default: Date.now},
ip: String,
})

尝试添加到数据库

WistiaAnalytic.create({event_key: '1402230270487e0.2668362990953028'}, function(err) {});
WistiaAnalytic.create({event_key: '1402229819163e0.4385743956081569'}, function(err) {});
WistiaAnalytic.create({ip: '1402229819163e0.4385743956081569'}, function(err) {});
WistiaAnalytic.create({event_key: '1402229819163e0.4385743956081569'}, function(err) {
console.log(err)
});

最佳答案

Mongoose 在后台创建索引,因此您需要延迟 create 调用,直到索引创建完成。一种方法是使用模型的 'index' 事件:

WistiaAnalytic.on('index', function(err) {
WistiaAnalytic.create({event_key: '1402230270487e0.2668362990953028'}, function(err) {});
WistiaAnalytic.create({event_key: '1402229819163e0.4385743956081569'}, function(err) {});
WistiaAnalytic.create({ip: '1402229819163e0.4385743956081569'}, function(err) {});
WistiaAnalytic.create({event_key: '1402229819163e0.4385743956081569'}, function(err) {
console.log(err)
});
});

关于node.js - Mongoose 中的唯一索引不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24106512/

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