我刚刚在stackoverflow的讨论中搜索了我的问题,但与我发布的内容类似。因此,在这种情况下,我只想更新我的集合,然后使用'Promise'模块,而不是像我通常那样使用回调/匿名函数。但是当我在cmd中执行js的应用程序时出现错误。
这是我的简单代码:
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) {
db.collection('Employee').updateOne({
"EmployeeName": "Jeffrey"
}, {
$set: {
"EmployeeName": "Jeffrey Scurgs"
}
});
});
当我在cmd中执行代码时出现错误:
(node:8600)UnhandledPromiseRejectionWarning:TypeError:无法在C:\ Users \ DELL \ guru99 \ 5_Promise \ app_promise.js:7:9处读取未定义的属性'collection'at process._tickCallback(internal / process / next_tick.js: 189:7)(节点:8600)UnhandledPromiseRejectionWarning:未处理的承诺拒绝。这个错误源于在没有catch块的情况下抛出异步函数,或者拒绝未使用.catch()处理的promise。 (拒绝ID:1)(节点:8600)[DEP0018]弃用警告:不推荐使用未处理的拒绝承诺。将来,未处理的承诺拒绝将使用非零退出代码终止Node.js进程。
那么,上面的代码中是否有任何错误的代码?
谢谢你的帮助......抱歉我的英语不好
如果连接到数据库时出错,则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"
}
});
});
你的方法是正确的,但你错过了一件事。
当你不提供回调参数时,mongo ORM会返回一个promise。这是更正后的代码:
MongoClient.connect(url)
.then(function(db) { // <- db is first argument
db.collection('Employee').updateOne({
"EmployeeName": "Jeffrey"
}, {
$set: {
"EmployeeName": "Jeffrey Scurgs"
}
});
})
.catch(function (err) {})
到目前为止,这是最好的答案...由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);
});