Я новичок в Node и пытаюсь убедиться, что использую разумный дизайн для JSON- управляемое веб-приложение.
У меня есть куча данных, хранящихся в Redis, и я получаю их через узел, передавая результаты по мере их поступления из Redis. Вот хороший пример того, что я делаю:
app.get("/facility", function(req, res) {
rc.keys("FACILITY*", function(err, replies) {
res.write("[");
replies.forEach(function (reply, i) {
rc.get(reply, function(err, reply) {
res.write(reply);
if (i == replies.length-1) {
res.write("]");
res.end();
}
else
res.write(",");
});
});
});
});
По сути, я получаю набор ключей от Redis, а затем запрашиваю каждый из них, транслируя результат в наполовину вручную созданный JSON (строки, поступающие из Redis, уже находятся в JSON). Теперь это прекрасно работает, но я не могу избавиться от мысли, что i == answers.length-1 немного неаккуратен?
Я мог бы сделать все это с помощью mget в Redis, но на самом деле я не об этом ' м пытаюсь получить это; как лучше всего обрабатывать асинхронный цикл с помощью forEach, потоковая передача вывода и изящное закрытие соединения с помощью res.end с выполнением цикла.
Это лучший способ или есть более элегантный образец, которому я мог бы следовать?