Я пытаюсь обернуть мозг вокруг обещаний, и я реорганизую некоторые вложенные обратные вызовы в обещания. Я сталкиваюсь с чем-то, чего не понимаю, и любая помощь, которую кто-либо может предоставить, будет оценена по достоинству. Там определенно что-то не так с моим for-loop; Я полагаю, что такая структура недействительна, но я не уверен, что с ней делать. Кроме того, результат, возвращаемый функцией insertTickersDb, кажется, забирает весь мой массив и вставляет его как одну запись, а не то, на что я надеялся. Я знаю, что делаю неправильно - пожалуйста, помогите мне понять, что именно.Узел Mongoose и Q Promises
Я вразумлял функцию Mongoose так:
var insertTickersDb = q.nfbind(db.tickers.insert.bind(db.tickers));
У меня есть функция вставки, которая выглядит следующим образом:
function insertTickers(symbols) {
console.log("inserting tickers");
if (symbols) {
if (!(symbols instanceof Array)) {
symbols = [symbols];
}
var tickersToInsert = [];
symbols.map(function(symbol) {
tickersToInsert.push({
symbol: symbol
});
});
console.log("tickersToInsert = " + JSON.stringify(tickersToInsert));
return insertTickersDb(tickersToInsert);
}
}
и у меня есть тест, как это:
describe("tickerIntegrationTests internal testing tools", function() {
it("insertTickers should insert the provided tickers", function(done) {
var tickerList = ["A", "B", "C"];
insertTickers(tickerList).then(function(data) {
console.log("inside insertTickers, data = " + JSON.stringify(data));
for (var d = 0; d < data.length; d++) {
console.log("d = " + d + ",data[d].symbol = " + data[d].symbol);
assert.equal(data[d].symbol, tickerList[d]);
}
}).then(removeTickers(tickerList)).done(function(){done();});
});
});
Мой выход:
tickerIntegrationTests internal testing tools
inserting tickers
tickersToInsert = [{"symbol":"A"},{"symbol":"B"},{"symbol":"C"}]
inside insertTickers, data = [[{"symbol":"A","_id":"552faf5c0aac9578428320da"},{"symbol":"B","_id":"552faf5c0aac9578428320db"},{"symbol":"C","_id":"552faf5c0aac9578428320dc"}],{"n":0}]
d = 0,data[d].symbol = undefined
Да. Я назвал этот ответ правильным. Я понял, что вы описали, но поведение кажется другим, чем с моделью обратного вызова - я думаю, я просто ожидал чего-то, чего я не должен. Спасибо за вашу помощь. –