模块承诺:UnhandledPromiseRejectionWarning:类型错误:无法读取未定义的属性“集合”

时间:2019-03-09 11:19:04

标签: javascript node.js promise

我只是在stackoverflow的讨论中搜索我的问题,但与我的问题没有什么相似之处。因此,在这种情况下,我只想更新我的收藏集,然后使用“ Promise”模块,而不是像往常一样使用回调/匿名函数。但是当我在cmd中执行js的应用程序时出现错误。

这是我的简单代码:

df = pd.read_csv(filename, index_col=None, header=0, encoding='utf-8')

当我在cmd中执行代码时出现错误:

  

(节点:8600)UnhandledPromiseRejectionWarning:TypeError:无法读取   未定义的属性“集合”       在C:\ Users \ DELL \ guru99 \ 5_Promise \ app_promise.js:7:9       在       在process._tickCallback(内部/进程/next_tick.js:189:7)(节点:8600)UnhandledPromiseRejectionWarning:未处理的承诺   拒绝。该错误是由抛出异步内部引起的   没有捕获块或拒绝承诺   未使用.catch()处理。 (拒绝ID:1)(节点:8600)[DEP0018]   DeprecationWarning:已弃用未处理的承诺拒绝。在   未来,未处理的承诺拒绝将终止   具有非零退出代码的Node.js进程。

那么,上面的代码中是否有错误的代码?

感谢您的帮助... 对不起,我的英语不好

3 个答案:

答案 0 :(得分:0)

只有在连接到数据库时出错,db变量才可以不确定。

您需要检查并修复显示的任何错误。您还可以共享错误

var Promise = require('promise'); // use the 'promise' module
    var MongoClient = require('mongodb').MongoClient;
    var url = 'mongodb://localhost/EmployeeDB';

    MongoClient.connect(url)
    	.then(function(err, db) {
            if (err) {
              return throw err; // Check the error
            }
    	    db.collection('Employee').updateOne({
    	        "EmployeeName": "Jeffrey"
    	    }, {
    	        $set: {
    	            "EmployeeName": "Jeffrey Scurgs"
    	        }
    	    });
    	}); 

答案 1 :(得分:0)

您的方法是正确的,但您错过了一件事。

当您不提供回调参数时,mongo ORM将返回一个承诺。这是更正的代码:

MongoClient.connect(url)
    .then(function(db) { // <- db is first argument
        db.collection('Employee').updateOne({
            "EmployeeName": "Jeffrey"
        }, {
            $set: {
                "EmployeeName": "Jeffrey Scurgs"
            }
        });
    })
    .catch(function (err) {})

答案 2 :(得分:0)

这是迄今为止最好的答案... uday singh

发布
MongoClient.connect(url)
.then(function(db) { // <- db is first argument
    db.collection('Employee').updateOne({
        "EmployeeName": "Jeffrey"
    }, {
        $set: {
            "EmployeeName": "Jeffrey Scurgs"
        }
    });
})
.catch(function (err) {})

之后,我想探索嵌套的Promise然后... 这里的代码...

var Promise = require('promise');
var MongoClient = require('mongodb').MongoClient;
var url = 'mongodb://localhost/EmployeeDB';

MongoClient.connect(url)
.then(function(db) {
    return db.collection('Employee').insertOne({
        Employeeid: 4,
        EmployeeName: "Ronan"
    })
    .then(function() {
        return db.collection('Employee').insertOne({
            Employeeid: 5,
            EmployeeName: "Teabouf"
        })
    })
}).catch(function(err) {
    console.error(err);
});