我知道围绕这个主题提出了很多问题,但我似乎无法找到合适的最新答案。
在一个新的空DB上,我使用了以下行抛出mongo
shell:
db.rest.createIndex( { "code": 1 }, { unique: true } )
然后我启动了我的node.js服务器。我的架构如下:
var restSchema = new Schema({code: String});
mongoose.model('rest', restSchema);
并且 save()在这里完成:
router.get('/', function (req, res, next) {
var o = new (mongoose.model('rest'))({code: "uniuqeString"});
o.save(function (err, o) {
if (err) return console.error(err);
});
mongoose.model('rest').find(function (err, rest) {
res.send(rest);
});
现在,当这段代码运行时,mongoose正在使用code:"uniqueString"
将新文档插入数据库,而忽略我通过 mongo shell 高级定义的唯一索引
有任何想法可能会发生这种情况吗?是因为我还没有通过猫鼬模式将该领域定义为独特的?如果是这种情况,我想在启动应用程序之前预定义数据库中的所有索引,并避免代码中的索引定义。