我在Express JS中进行了JS开发,我们正在将应用程序迁移到TypeOrm的Typescript。
async function loadRootMessagesForTwitter(req, res)
{
const messageRepository = getManager().getRepository(Message);
req.body.forEach(function(obj) {
const requestMessage = messageRepository.create(obj);
var channel_message_ID = requestMessage['channel_message_ID'];
if (channel_message_ID) {
await messageRepository.save(requestMessage);
}
}
我面临以下错误
error TS1308: 'await' expression is only allowed within an async function
答案 0 :(得分:2)
传递给forEach
的函数必须是async
:
req.body.forEach(async function(obj) {
// ...
await messageRepository.save(requestMessage);
});
答案 1 :(得分:0)
为什么不这样做?
textField.tap()
答案 2 :(得分:0)
如果要确保在执行循环的下一次迭代之前等待每个forEach
调用完成,那么简单地将save()
与异步回调一起使用是行不通的。在这种情况下,这可能无关紧要,因为你忽略了save()
调用的任何结果,也许你可以向save()
抛出一堆调用,在这种情况下只是:
const messageRepository = getManager().getRepository(Message);
req.body.forEach(function(obj) {
const requestMessage = messageRepository.create(obj);
var channel_message_ID = requestMessage['channel_message_ID'];
if (channel_message_ID) {
messageRepository.save(requestMessage);
}
}
但是,如果您想控制通话,请停止使用forEach
并使用打字稿for...of
代替:
const messageRepository = getManager().getRepository(Message);
for (let obj of req.body) {
const requestMessage = messageRepository.create(obj);
var channel_message_ID = requestMessage['channel_message_ID'];
if (channel_message_ID) {
await messageRepository.save(requestMessage);
}
}
}