【问题标题】:Node js functions : sql query result call twiceNode js函数:sql查询结果调用两次
【发布时间】:2015-02-12 18:17:57
【问题描述】:

我遇到了 javascript/node js 函数的问题。

当我发送一个带有“request.service.mssql”对象的函数查询的sql查询时,结果函数被调用了两次......

我不明白,因为我的sql查询是“更新”,结果为空(我没有多行结果)

例如,我有一个使用新密码发送电子邮件的功能。电子邮件发送了两次...我找到了一个带有索引的临时解决方案,但它不是很干净。

你能解释一下吗?

//construct SQL query
var email = "test@toto.com";
var password = require("crypto").randomBytes(4).toString('hex');
var password_md5 = require("crypto").createHash("md5").update(password).digest("hex");
var sql = "update dbo.mytable SET password='"+password_md5+"' where id=12";

var id = 0;     //temp solution

mssql.query(sql, 
{
    success: function(results) {
        //Send email with new pwd
        if(id == 0) {
            response.send(statusCodes.OK,password_md5);
            sendEmail(email,password);
        }
        id++;   //temp solution
    },
    error: function(err) {
        response.send(statusCodes.INTERNAL_SERVER_ERROR,"Error : " + err);
    }
}); 

谢谢你:-)

史蒂夫

【问题讨论】:

  • 我强烈怀疑问题出在其他地方,因为您的代码对我来说似乎有效。如果整个代码块被调用两次怎么办?请在此处添加console.log("IS CALLED"); 作为第一行(var email ... 之前)。在深入挖掘之前,让我们摆脱最明显的错误:)
  • 大功告成:“IS CALLED”只出现一次。
  • 如果我删除 id=0 / id++,我会在我的日志中收到 2 封邮件和 1 个“IS CALLED”...
  • 对不起史蒂夫,我没有任何线索给你。
  • 好的,谢谢您的帮助。我将继续使用我的身份...

标签: node.js azure azure-sql-database


【解决方案1】:

我在另一个论坛上得到了答案:我必须在我的 SQL 语句前加上 set nocount on; 命令。

感谢您的帮助。

史蒂夫

【讨论】:

    猜你喜欢
    • 2015-07-15
    • 2016-11-25
    • 2020-06-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-19
    • 2017-05-28
    • 1970-01-01
    相关资源
    最近更新 更多