我想用数据库中的值替换字符串中的一些文本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) });