Javascript nodeJS+;MonogoDB-TypeError:无法读取属性';收集';空的
我开始使用nodeJS和mongoDB,刚开始,在我连接到db之后,我得到了这个错误。 我读了互联网上的每一篇文章,但仍然不工作。。。 我通过mongoDB打开一个连接并尝试插入数据,代码为:Javascript nodeJS+;MonogoDB-TypeError:无法读取属性';收集';空的,javascript,node.js,mongodb,Javascript,Node.js,Mongodb,我开始使用nodeJS和mongoDB,刚开始,在我连接到db之后,我得到了这个错误。 我读了互联网上的每一篇文章,但仍然不工作。。。 我通过mongoDB打开一个连接并尝试插入数据,代码为: var insertUserMovieRating = function(successCallback, errCallback, movieName, rating) { var url = config.db.databaseType + '://' + config.user + ':'
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变量,而不是通过其他变量。
感谢所有帮助我的人 我认为您对db.collection(config.db.databaseName)有问题。您的数据库与其保存的集合不同。看起来你并没有真正掌握正确的收藏 也许试试类似的东西
var collection = db.movies; // or whatever the name of your collection is
对于这样的问题,我总是建议打开MongoDB shell,找出语法并在其中工作。一旦找到解决方案,您就可以将其粘贴到Node.js代码中。我认为您没有传递集合名称,如果集合中没有使用更新记录定义集合,您需要进行错误处理
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();
});
}
});
};
请检查文件并邮寄至和
希望这对你有帮助 错误发生在哪一行?这里:var collection=db.collection(config.db.databaseName);已尝试,现在获取TypeError:无法读取null的属性“movies”。我先在本地mngoDB上做了,然后去了mlab,那里的麻烦开始了,我忘了告诉你,当我打印var db时,我得到null,如果它告诉了什么,你在哪里打印它?如果(db!=null)前一行谢谢,但问题是db为空,您提供的内容不会发生,因为db为空。您是否检查生成的URL或是否可以添加到此处?当然,这是带有值的URL:mongodb://user:password@ds145193.mlab.com:45193/movies此用户是否获得数据库授权