Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript nodeJS+;MonogoDB-TypeError:无法读取属性';收集';空的_Javascript_Node.js_Mongodb - Fatal编程技术网

Javascript nodeJS+;MonogoDB-TypeError:无法读取属性';收集';空的

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 + ':'

我开始使用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变量,而不是通过其他变量。
感谢所有帮助我的人

我认为您对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此用户是否获得数据库授权