Javascript 嵌套节点js
我读了来自的教程,不明白为什么第二个“插入器通”不起作用。谢谢你的帮助Javascript 嵌套节点js,javascript,node.js,mongodb,promise,Javascript,Node.js,Mongodb,Promise,我读了来自的教程,不明白为什么第二个“插入器通”不起作用。谢谢你的帮助 var Promise=require('promise'); var MongoClient=require('mongodb').MongoClient; var url = 'mongodb://localhost/EmployeeDB'; MongoClient.connect(url) .then(function(db) { db.collection('Documents').insertOn
var Promise=require('promise');
var MongoClient=require('mongodb').MongoClient;
var url = 'mongodb://localhost/EmployeeDB';
MongoClient.connect(url)
.then(function(db)
{
db.collection('Documents').insertOne({
Employeeid: 1,
Employee_Name: "Petro"})
.then(function(db1) {
db1.collection('Documents').insertOne({
Employeeid: 2,
Employee_Name: "Petra"})
})
db.close();
});
您有两个异步操作(db.insertOne)正在发生 因此,您应该有一个
。然后在第二个insertOne之后关闭连接
代码应该是这样的
{
db.collection('Documents').insertOne({
Employeeid: 1,
Employee_Name: "Petro"})
.then(function(db1) {
db1.collection('Documents').insertOne({
Employeeid: 2,
Employee_Name: "Petra"})
}).then(function(db2) {
db.close();
})
});
见评论
MongoClient.connect(url)
.then(function(db) {
// you need a return statement here
return db.collection('Documents').insertOne({
Employeeid: 1,
Employee_Name: "Petro"
})
.then(function(record) {
// another return statement
// try db instead of db1
return db.collection('Documents').insertOne({
Employeeid: 2,
Employee_Name: "Petra"
})
})
.then(function() {
// move the close here
db.close();
})
})
// Add an error handler
.then(null, function(error){
console.log(error)
})
db.close();这甚至违背了使用它们的目的。它没有从第二次调用insertOne
返回承诺。奇怪的是,它不起作用。第一条记录适用,但第二条和db.close不适用。您确定它应该是db1
?而不是db
?我想这就是问题所在。我已经编辑了代码。