Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/38.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 嵌套节点js_Javascript_Node.js_Mongodb_Promise - Fatal编程技术网

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
?我想这就是问题所在。我已经编辑了代码。