在Azure移动应用程序的Azure表脚本中插入不同的表

我一直在广泛search这个答案,但只find了指代旧的Azure应用程序服务而不是新的Azure移动应用程序的解决scheme。

在这个例子中,在表格的表格脚本中,我将validation的用户ID插入到同一个表格的用户ID字段中。

table.insert(function (context) { context.item.userId = context.user.id; return context.execute(); }); 

但是,如果还想将其插入到用户要求插入的另一个表中? 我怎样才能从表格脚本访问这个其他表格?

之前,正如我发现的所有解决scheme所显示的,您可以通过“tables.getTable('otherTable')”从同一个SQL DB访问另一个表。 但现在我得到一个错误。

阅读“Azure移动应用程序 – 节点SDK”文档,我发现了“context.tables()”函数,它似乎从db中获得了不同的表格。 但是当我插入使用代码下面没有任何反应:

 table.insert(function (context) { var table2 = context.tables('table2'); table2.insert({string_column: '1234'}); return context.execute(); }); 

谢谢!

find了正确的做法。 这是我的代码:

 var insertMiddleware = function(req,res,next){ var table2 = req.azureMobile.tables('table2'); var toBeInserted = {field1: 'something', id: '1'}; //id is needed var promiseReturned = table2.insert(toBeInserted); promiseReturned.then(function(data){ console.log('Inserted with success!'); next(); }, function(error) { console.log('Found an error', error); }); }; table.insert.use(insertMiddleware, table.operation); table.insert(function (context) { return context.execute(); }); 

首先我声明一个中间件函数,每次调用插入时都会执行。 在其中我从我想要访问的表中调用insert函数,并返回一个promise。 (这是我的错误)

然后,我使用“use”函数将中间件与脚本运行的表的插入函数相关联。

最后,我正常运行插入function。

在我的情况下,我想插入一个logging到另一个表后生成id,所以我写它作为callback的一部分。

 table.insert(function(context) { return context.execute().then(function(results) { var table2 = context.tables('table_name'); var newRecord = { id: results.id, some: "data", more: "123" }; table2.insert(newRecord); return results; }); });