我尝试将值添加到我的数据库,然后使用 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/