Так что я следующий код в приложение Экспресс для апи POST:Mongoose не сохранять все документы в цикле
var dashSchema = new mongoose.Schema({
key: 'string',
status: 'string',
assignee: 'string',
summary: 'string'
});
var dashData = mongoose.model('dashData', dashSchema);
app.post('/api/data', function(req, res) {
var issues = req.body.issues;
for (var i=0;i<issues.length;i++) {
dashData.create({key: issues[i].key, status: issues[i].fields.status.name, assignee: issues[i].fields.assignee, summary: issues[i].fields.summary});
}
res.end();
});
Всякий раз, когда я отправляю массив 5 «вопросов» только первые две записываются в MongoDB. Я предполагаю, что это потому, что это все, что он может написать за время, необходимое для повторения цикла, но я не знаю, как заставить его записывать все данные, а затем возвращать ответ.
Любые идеи?
Просто потому, что последний 'create' побежал не означает, что все предыдущие' create's сохранены. Они асинхронны. Вам нужно проверить, что все из них выполнены, используя какой-то асинхронный инструмент (async.js, обещания). –
Я знаю, сэр. OP все равно не обрабатывал никаких результатов запроса, просто инициировал их. По крайней мере, в этом контексте он явно обеспокоен выполнением, а не ошибками. Что касается контекста его запроса, мое решение достаточно. Но, чтобы угодить твоим добрым глазам, я уточню свой ответ. – galactocalypse
Хорошее сырое решение для асинхронного использования. –