1

我试图向我的数据库添加值,然后使用 mongoose find 检索数据库。添加了值,但 mongoose 查找不返回值。以下是我的代码。

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 刷新页面。它会给我正确的前端。

感谢帮助

4

1 回答 1

0

.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);
    })
});
于 2015-03-23T02:53:34.230 回答