Javascript 从节点js应用程序执行插入时,插入后触发器不起作用

Javascript 从节点js应用程序执行插入时,插入后触发器不起作用,javascript,mysql,node.js,triggers,Javascript,Mysql,Node.js,Triggers,我有一个后插入触发器。这调用了一个存储过程。当我运行直接查询时,它工作得很好。但当我通过NodeJS应用程序插入数据时。它甚至不在主表中插入数据。触发器和存储过程中没有任何错误,因为它与表的直接插入查询一起工作 dbObject.create(data, function(err, response){ if (err) { //console.log("err", err); res.status(500).jsonp(respo

我有一个后插入触发器。这调用了一个存储过程。当我运行直接查询时,它工作得很好。但当我通过NodeJS应用程序插入数据时。它甚至不在主表中插入数据。触发器和存储过程中没有任何错误,因为它与表的直接插入查询一起工作

dbObject.create(data, function(err, response){
        if (err) {
            //console.log("err", err);
            res.status(500).jsonp(response)
        }
        console.log("response", response);
        dbObject.find({SnsId: SnsId}, '*' , {}, 0, 0, {}, function(err, resp){
            if (err) {
                //console.log("err", err);
                res.status(500).jsonp(err)
            }
            console.log("response", resp);
            res.jsonp(resp);
        });
    });
触发码--

存储过程代码--

我使用的是Mysql数据库,存储引擎是InnoDB。我已经检查了sql查询。它是用SET关键字形成的。 在插入存储过程之后,Mysql是否支持使用set关键字插入查询


现在问题解决了。这是Mysql中所有大写的表名,我是用小写字母写的。表名是“user”和“sensor”。现在问题解决了。

我还建议在您检查错误的地方使用
return
,否则代码将继续,并且在出现错误时不会停止

尝试使用以下代码:

dbObject.create(data, function(err, response){
    if (err) {
        //console.log("err", err);
        return res.status(500).jsonp(response)
    }
    console.log("response", response);
    dbObject.find({SnsId: SnsId}, '*' , {}, 0, 0, {}, function(err, resp){
        if (err) {
            //console.log("err", err);
            return res.status(500).jsonp(err)
        }
        console.log("response", resp);
        res.jsonp(resp);
    });
});

从这段代码中推断不出多少,请尝试发布一个。您可以尝试记录调用
dbObject.create(…)
时使用的实际SQL查询,并将其与手动执行的操作进行比较,以查看是否存在任何差异“它甚至不在主表中插入数据”-这意味着问题在node.js数据库插入中。无法通过共享的代码段识别问题。请指定您正在使用的数据库以及与之对应的更多代码段。更新了相关数据库信息。让您的nodeJS应用程序与API对话是一个好主意吗?这样你就可以更好地控制查询的执行方式和方法了。@miken32嗯,他在发布后编辑了他的原始问题,添加了返回语句。哈哈,很抱歉。仍然没有回答这个问题。
DELIMITER $$
 CREATE PROCEDURE copyToSensorMap(IN snsid bigint(20),IN sns_state varchar(128))
   BEGIN
   DECLARE  color varchar(128);
   INSERT INTO test3.`SENSOR_MAP` (`SENSOR_ID`, `SENSOR_NAME`, `USER_ID`, `HOST_ID`,  `SENSOR_STATE`)
    SELECT `SnsId`,
   `SnsName`,`SnsOwner`,`HostId`,`SnsState`
         FROM test4.`SENSORS`
         where test4.`SENSORS`.`SnsId`=snsid;
    IF ( sns_state ='Unassigned') THEN
        set color = 'Grey';
    ELSEIF ( sns_state ='Running') THEN
     set color = 'Green';
    END IF;
    update test3.`SENSOR_MAP`
       set test3.`SENSOR_MAP`.`SENSOR_COLOR` = color
       where test3.`SENSOR_MAP`.`SENSOR_ID` = snsid;
UPDATE test3.`SENSOR_MAP`
  INNER JOIN test4.`HOSTS`
    ON (test3.`SENSOR_MAP`.`HOST_ID` = test4.`HOSTS`.id)
  SET 
    test3.`SENSOR_MAP`.HOST_NAME = test4.HOSTS.Name,
    test3.`SENSOR_MAP`.LATITUDE = test4.HOSTS.GpsLatitude,
    test3.`SENSOR_MAP`.LONGITUDE = test4.HOSTS.GpsLongitude;
UPDATE test3.`SENSOR_MAP`
  INNER JOIN test4.`users` ON (test3.`SENSOR_MAP`.`USER_ID` = test4.`users`.id)
  SET 
    test3.`SENSOR_MAP`.USER_NAME = test4.users.user;
UPDATE  test3.`SENSOR_MAP`  c
    INNER JOIN
    (
        select a.`SnsId`,b.id,b.ServiceName,b.ServiceType
           from test4.sensors as a
           join test4.SESSIONS as b  on a.SessionId =b.id
           where a.`SnsId` =snsid
           group by `SnsId` 
    ) d  ON c.SENSOR_ID = d.`SnsId`
    SET c.SESSION_NAME = d.ServiceName,
        c.SESSION_TYPE = d.ServiceType;
END $$
dbObject.create(data, function(err, response){
    if (err) {
        //console.log("err", err);
        return res.status(500).jsonp(response)
    }
    console.log("response", response);
    dbObject.find({SnsId: SnsId}, '*' , {}, 0, 0, {}, function(err, resp){
        if (err) {
            //console.log("err", err);
            return res.status(500).jsonp(err)
        }
        console.log("response", resp);
        res.jsonp(resp);
    });
});