2015-11-19 42 views
0

我的问题是,在Azure移动服务后端,当我在mssql.query运行SQL插入类似下面蔚蓝的移动服务后端SQL插入

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

的一个数据不会显示在天蓝门户网站了。我知道我可以使用内置的

todoItemTable.insert() 

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

谢谢!

回答

0

检查您的日志以查看可能出现的问题。插入新记录时,您不必担心__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); 
     } 
    }); 

如果这不会让你走,试着加入控制台.log语句在回调中查看它是否正在调用以及多少次。如果您在日志中有错误,请更新您的问题。