应该如何使用mongoose的model.on('index',...)?

时间:2013-01-15 08:19:53

标签: node.js mongodb mongoose

在查看MongooseJS MongoDB/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提到这一点,虽然我不确定如何做到这一点。也许还有另一种方法可以保证在依赖导出模型的应用程序的其他部分之前完成此索引操作?

如何正确使用?

2 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:1)

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

let mongoose = require('mongoose');

mongoose.Model.on('index', function(err) {
  if (err) logger.error(err);
});