azure移动服务后端SQL插入

时间:2015-11-19 23:20:31

标签: azure azure-mobile-services

我的问题是,当我在mssql.query上运行SQL插件时,在azure移动服务后端上,如下所示

var sql = " INSERT INTO Customers 
(CustomerName, ContactName) VALUES (?, ?); ";

mssql.query(sql, [item.CustomerName, item.ContactName], {
        success: function(results) {
            request.execute();
        },
        error: function(err) {
            console.log("error is: " + err);
        }   
    });

数据不再显示在azure门户网站上。我知道我可以使用内置的

todoItemTable.insert()

要插入,但有时业务逻辑非常复杂,只能在SQL中完成。是__version字段导致问题吗?如果我插入时应该放入什么?

谢谢!

1 个答案:

答案 0 :(得分:0)

检查日志以查看可能出现的问题。插入新记录时,您无需担心__version或其他系统列。

这是在表插入脚本中吗?如果是这样,您可能不希望在回调中使用request.execute()。除了插入mssql语句中的记录之外,还会插入原始记录。

您可能还有一个问题,因为mssql.query()可以多次调用其回调函数,具体取决于SQL生成的结果消息的数量。使用requestExecuted变量定义类似sql的变量,并在mssql成功回调中,在执行request.execute()调用之前检查它:

var requestExecuted = false;

mssql.query(sql, [item.CustomerName, item.ContactName], {
        success: function(results) {
            if (requestExecuted === false) {
              requestExecuted = true;
              request.execute();
            }
        },
        error: function(err) {
            console.log("error is: " + err);
        }   
    });

如果这不能帮助您,请尝试在回调中添加console.log语句,以查看它是否被调用以及被调用多少次。如果您的日志中有错误的更多详细信息,请更新您的问题。