【问题标题】:azure mobile service back-end SQL insert天蓝色移动服务后端 SQL 插入
【发布时间】:2015-11-23 04:51:05
【问题描述】:

我的问题是,当我在 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 字段吗?如果是插入的时候应该放什么?

谢谢!

【问题讨论】:

    标签: azure azure-mobile-services


    【解决方案1】:

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

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

    您可能还会遇到问题,因为 mssql.query() 可以多次调用其回调函数,具体取决于 SQL 产生的结果消息的数量。使用您的 sql 变量定义像 requestExecuted 这样的变量,并在 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 语句以查看它是否被调用以及调用了多少次。如果您从日志中的错误中获得更多详细信息,请更新您的问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-03-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多