我开始使用nodeJS和mongoDB并且刚开始,在我连接到db之后,我收到了这个错误。 我读了互联网上的每篇文章,仍然没有工作...... 我通过mongoDB打开一个连接并尝试插入数据,代码:
var insertUserMovieRating = function(successCallback, errCallback, movieName, rating) {
var url = config.db.databaseType + '://' + config.user + ':' + config.password + '@' + config.db.server + ':' + config.db.port + '/' + config.db.databaseName;
MongoClient.connect(url, function(err, db) {
if (err) {
errCallback(err)
}
if (db != null) {
console.log("insert");
var collection = db.collection(config.db.databaseName);
collection.update({
title: movieName
}, {
'$push': {
'rating': rating
}
}, {
upsert: true
}, function(err, res) {
if (err) errCallback(err);
successCallback("ok");
// db.close();
});
}
});
};
我是如何解决这个问题的?我认为我坐了5个小时仍然没有解决这个问题,我非常感谢我将得到的每一个帮助,谢谢!
已解决:解决方案是真正写入与URL var的连接值,而不是其他变量。 感谢所有帮助过我的人!
答案 0 :(得分:1)
我认为db.collection(config.db.databaseName)存在问题。您的数据库与其拥有的集合不同。看起来你并没有真正掌握正确的收藏。
也许尝试像
这样的东西var collection = db.movies; // or whatever the name of your collection is
对于像这样的问题,我总是建议打开MongoDB shell并弄清楚语法并让它在那里工作。获得解决方案后,您只需将其粘贴到Node.js代码中即可。
答案 1 :(得分:0)
我认为您错过了传递集合名称,如果未使用集合中的更新记录定义集合,则需要进行错误处理。
var insertUserMovieRating = function(successCallback, errCallback, movieName, rating) {
var url = config.db.databaseType + '://' + config.user + ':' + config.password + '@' + config.db.server + ':' + config.db.port + '/' + config.db.databaseName;
//url = 'mongodb://admin:password@localhost:27017/db'
//make sure your url look like as above
MongoClient.connect(url, function(err, db) {
if (err) {
errCallback(err)
}
if (db) {
console.log("insert");
var collectionName = 'movies'; // or whatever the name of your collection name , its similar like your table name in SQL
var collection = db.collection(collectionName);
if(!collection){
errCallback('Collection is not defined in database')
}
collection.update({
title: movieName
}, {
'$push': {
'rating': rating
}
}, {
upsert: true
}, function(err, res) {
if (err) errCallback(err);
successCallback("ok");
// db.close();
});
}
});
};
希望这会对你有所帮助!!