2015-03-22 5 views
1

Я пытаюсь добавить значения в свою базу данных, а затем получить базу данных с помощью поиска мангуста. Значения добавляются, но поиск мангуста не возвращает значения. Ниже приведены мои коды.Nodejs Angularjs Mongoose Query in Async.series

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) { 

}); 
}); 

В моем переднем конце, я хочу, чтобы ввести свой номер книги, а затем в соответствии с количеством книг, список будет appear.Example ниже: -

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, чтобы обновить страницу. Это даст мне правильный передний конец.

благодаря помощи

ответ

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); 
    }) 
}); 
+0

Я попытался заменить на (вар я = 0; я

+0

Извините, если вам нужны значения, вам нужно использовать 'async.map', я обновил код выше, чтобы отразить его. Затем вам не нужен третий функция в вызове 'async.series'. –

+0

Спасибо, но как я могу res.json получить результаты? –