在Azure移动应用程序的Azure表脚本中插入另一个表

时间:2016-04-18 15:19:51

标签: node.js azure express azure-sql-database azure-mobile-services

我一直在广泛搜索此答案,但只找到了解决旧Azure应用服务而非新Azure移动应用的解决方案。

在这个例子中,在表的表脚本中,我将经过身份验证的用户ID插入到同一个表的userID字段中。

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

但是,如果还想将其插入与用户要求插入的表不同的表中?如何从表脚本中访问此其他表?

之前,如我发现的所有解决方案所示,您可以执行" tables.getTable(' otherTable')"从同一SQL DB访问另一个表。但是现在我收到了一个错误。

阅读'Azure Mobile Apps - Node SDK'文档,我找到了" context.tables()"函数,似乎从db获取不同的表。但是当我使用代码插入时,没有任何反应:

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

谢谢!

2 个答案:

答案 0 :(得分:2)

找到正确的方法。这是我的代码:

    JLabel lblNewLabel = new JLabel("");
    lblNewLabel.setIcon(new ImageIcon("C:\\Users\\Faisal\\Desktop\\New folder\\picture-1.thumbnail.png"));
    lblNewLabel.setBounds(0, 0, 515, 367);
    frame1.add(lblNewLabel);

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

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

最后我正常运行insert函数。

答案 1 :(得分:0)

在我的情况下,我想在生成id之后将一条记录插入到另一个表中,因此我将其作为回调的一部分写入。

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;
    });
});