当该行明确更新时,以下 results.length 始终为 0。
exports.get=function(request,response){
var mssql=request.service.mssql;
var sql="declare @tableId table(id nvarchar(255)); update mytable set myfield=1 output inserted.id into @tableId where id=(select top 1 id from mytable where myfield is null order by date); select id from @tableId;";
mssql.query(sql, {
success:function(results){
if(results.lentgh==1)
response.send(statusCodes.OK, results[0]);
else
response.send(statusCodes.OK,null);
}
});
});
您的 SQL 命令传递到mssql.query
函数有两个语句:更新和选择。每个语句都会生成一个“结果”(对成功回调的调用)。由于您在获得第一个结果时发送响应,并且它是更新调用的结果(不会“返回”任何内容),因此您的 API 始终会返回空响应,即使某些内容已更新。
另一个问题是您在获取结果长度时出现拼写错误:正确的是length
,而在你的代码中你有lentgh
。由于这是 JavaScript,这将被解释为未定义 (0),并且“if”子句将永远不会被执行。
尝试将代码替换为下面的代码,您应该在进行更新时开始看到响应。
exports.get = function(request, response) {
var mssql=request.service.mssql;
var sql="declare @tableId table(id nvarchar(255)); update mytable set myfield=1 output inserted.id into @tableId where id=(select top 1 id from mytable where myfield is null order by date); select id from @tableId;";
var firstResponse = true;
mssql.query(sql, {
success : function(results) {
if (firstResponse) {
// result from the update call, can ignore
firstResponse = false;
} else {
if(results.length == 1) {
response.send(statusCodes.OK, results[0]);
} else {
response.send(statusCodes.OK,null);
}
}
}
});
};
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)