2

在查看 for 的文档时MongooseJSMongoDB/Node.js似乎可以在对象上指定索引,如下所示:

var MyModelSchema = new Schema({ name: String, index: true });
var MyModel = mongoose.model('MyModel', MyModelSchema);
MyModel.on('index', function()
{
    doStuff();
});

根据文档,Mongoose 将ensureIndex()在启动时调用,除非该"autoIndex"选项在模式上明确设置为 false。一旦完成,该'index'事件将在模型上发出,这将触发回调。

我的理解是,这允许模型的用户确保在使用模型之前已完成所有索引。

我相信我听说过通过 这样做app.configure,尽管我不确定如何做到这一点。也许还有另一种方法可以保证在依赖于导出模型的应用程序的其他部分之前完成此索引操作?

这应该如何正确使用?

4

2 回答 2

4

模型上的'index'事件会提醒您模型ensureIndex调用中发生的任何错误。在事件触发之前,您不需要延迟使用模型。那会变得非常混乱。

于 2013-01-15T16:38:13.657 回答
1

我发现将以下内容添加到用于配置项目的猫鼬设置的区域很有用。

let mongoose = require('mongoose');

mongoose.Model.on('index', function(err) {
  if (err) logger.error(err);
});
于 2016-09-01T18:07:14.170 回答