Node.js Azure中的异步Easy表脚本
在Azure Portal中,我正在修改一个Easy表的脚本,我很难弄清楚如何在修改后的脚本中正确地将响应返回给客户端。这是使用节点包Node.js Azure中的异步Easy表脚本,node.js,azure,azure-mobile-services,Node.js,Azure,Azure Mobile Services,在Azure Portal中,我正在修改一个Easy表的脚本,我很难弄清楚如何在修改后的脚本中正确地将响应返回给客户端。这是使用节点包azure移动应用程序 举个简单的例子,假设我有一个表,我正在修改“insert”函数,如下所示: function getUserHeader(context) { return context.req.headers['user-id']; } table.insert(function (context) { context.item._us
azure移动应用程序
举个简单的例子,假设我有一个表,我正在修改“insert”函数,如下所示:
function getUserHeader(context) {
return context.req.headers['user-id'];
}
table.insert(function (context) {
context.item._user_id = getUserHeader(context);
return context.execute();
});
现在一切都好了,正如预期的那样完美地工作,表上的项目以正确的用户id和所有内容结束
但是,不管出于什么原因,我必须使getUserHeader
异步并返回一个承诺(可能我想在执行上下文之前验证一个令牌或检查相关表上的某些内容)。下面是上面的代码可能是异步的:
function getUserHeader(context) {
return new Promise(function(resolve, reject){
resolve(context.req.headers['user-id']);
});
}
table.insert(function (context) {
getUserHeader(context)
.then(function(uid) {
context.item._user_id = uid;
return context.execute();
})
});
现在它可以在一个级别上工作:context.execute
确实运行,并且记录确实被创建,并且具有正确的用户id。但是客户端进行的http调用从未得到响应。通常,http响应会返回添加到表中的项(在insert的情况下),但这里不会
向easy table脚本的工作流中添加非同步函数的正确方法是什么?调用承诺函数时,您错过了return
关键字
如果将其更改为:
table.insert(function (context) {
return getUserHeader(context).then(function(uid) {
context.item._user_id = uid;
return context.execute();
})
});
我到家后会试试的。我想试试,我想我已经试过了,但我会再试一次。