を使用して、文字列内の一部のテキストをデータベースの値に置き換えたいと考えていますpg-promise
。これまでPromiseを使用したことがないため、これをどのように処理するのが最善かについて苦労しています。
同期プログラミングと非同期プログラミングを組み合わせようとすると、これまでに試したことは機能しません。
var uid = ...;
"Some string".replace(/\#\{([\w]*?)\}/gmi, function(m, c) {
var r = "";
db.one("SELECT a FROM ... WHERE x = $1 AND y = $2", [c, uid])
.then(function(data) {
r = data.a;
});
return r;
});
r
当然のことながら、空の文字列です。データベースからの値を「待機」するようにこのブロックを書き換える方法はありますか?
私がやろうとしているのは、ユーザーに送信されるメッセージのプレースホルダーを置き換えることです。したがって、上記は呼び出された関数の一部であり、socket.ioprepareMessage
を使用してユーザーにメッセージを送信するので、次のようになります。
io.to(socket.id).emit('message', { text: prepareMessage(msg) });