node.js - Async.series 中的 Nodejs Angularjs Mongoose 查询

标签 node.js mongoose node-async

我尝试将值添加到我的数据库,然后使用 mongoose find 检索数据库。值已添加,但 mongoose find 不返回值。下面是我的代码。

app.post('/api/infosave', function(req,res){
async.series([function (cb){
    dbinfo.remove({}, function(err,result){
        if (err) throw err;
          cb(null);
    });
}, function (cb){

for (var i=0; i<req.body.numBooks;i++){
    dbinfo.create({
        numBooks: i+1,
        done: false
    });

};cb(null)

}, function (cb){
    dbinfo.find({},function(err,result){
        if (err)
            res.send(err);
        res.json(result);
        console.log(result);
        cb(null);
    });
}], function(error, results) {

});
});

在我的前端,我想输入我的图书数量,然后根据图书数量,会出现列表。示例如下:-

Number of books:-5(numBooks in the codes) [SUBMIT BUTTON]
Book number 1:
Book number 2:
Book number 3:
Book number 4:
Book number 5:

上面的代码不起作用,但如果我按 F5 刷新页面。它会给我正确的前端。

感谢帮助

最佳答案

您在尝试 .create() 模型的第二个函数调用中存在竞争条件。 .create() 采用第二个参数进行回调。

它应该看起来像这样。在正确创建所有模型之前,您的 .series() 函数不应前进。

var bookNum = [];
for (var i = 0; i < req.body.numBooks; i++) {
  bookNum.push(i+1)
}
async.map(bookNum, function(num, cb) {
  dbinfo.create({
    numBooks: i+1,
    done: false
  }, cb);
}, cb);

为您编写完整的代码...

app.post('/api/infosave', function(req, res, next) {
    async.waterfall([
        function(cb) {
            dbinfo.remove({}, cb);
        },
        function(ignore, cb) {
            var bookNum = [];
            for (var i = 0; i < req.body.numBooks; i++) {
              bookNum.push(i+1)
            }
            async.map(bookNum, function(num, cb) {
              dbinfo.create({
                numBooks: i+1,
                done: false
              }, cb);
            }, cb);
        }
    ], function(err, results) {
        if (err) return next(err);
        res.json(results);
    })
});

关于node.js - Async.series 中的 Nodejs Angularjs Mongoose 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29199443/

相关文章:

mongoose - npm install mongoose 失败(kerberos 和 bson 错误)

node.js - 如何在有限制的情况下运行并行进程?

node.js - Node-Webkit 中的 NodeJs Async.waterfall

node.js - 查询循环中的回调 hell

node.js - 如何在vscode调试器中调试多个 Node 项目?

javascript - 箭尾测试失败的正则表达式匹配

node.js - 如何检查 socket.io 是否与浏览器兼容?

javascript - 使用 express 和 multer 上传文件后如何下载?

javascript - 在 Node.js 同步/异步性能和速度中移动 100.000 多个文件

node.js - Nestjs - 在普通 Controller 中连接牛板