nodejs中给mongoDB数据建立索引出错
按照nodejs开发指南中的代码,给user文档数据建立索引如下:
collection.ensureIndex({name: 1}, {unique: true});
在运行时报如下错误:
Error: Cannot use a writeConcern without a provided callback
但是我手动到终端去运行:
db.users.ensureIndex({name: 1}, {unique: true})
没有报任何错误,求各位大神指点迷津啊
8 回复
看了你发的链接,跟我的问题有点不一样啊,他是不能插入进去,而我的是可以插入,就是不能建索引,如果把collection.ensureIndex({name: 1}, {unique: true});
给注释掉,就不会出任何错误了,看我片段代码:
User.prototype.save = function (callback) {
var user = {
name: this.name,
password: this.password
};
mongodb.open(function (err, db) {
if (err) {
return callback(err);
}
db.collection('users', function (err, collection) {
if (err) {
mongodb.close();
return callback(err);
}
// collection.ensureIndex({name: 1}, {unique: true});
collection.insert(user, {safe: true}, function (err, user) {
mongodb.close();
callback(err, user);
});
});
});
};
把注释去掉就会报错。
collection.ensureIndex(“name”);
试试
@jiyinyiyong 确实,加一个callback就不会报错了,代码:
collection.ensureIndex({name: 1}, {unique: true}, function (err) {
callback(err);
});
不知道是什么原因,我看mongoDB官方API也没说要加callback,等待大神分析。。
试过了,报一样的错误信息。
也遇到了同样情况。在save的时候没有假cb。但是在macos 10.8下是可以的。 在debian下不行。
估计是版本的问题,http://mongodb.github.io/node-mongodb-native/markdown-docs/indexes.html官方文档是需要callback的,不管什么时候,异步执行的都应该有这个callback