如果数组中不存在,则尝试添加新记录

时间:2014-10-01 03:59:45

标签: node.js raspberry-pi sequelize.js

我正在编写一个基于nodejs的脚本来从树莓派中获取温度读数,并在Sequelize部分遇到一些麻烦,它将传感器添加到数据库中。

ds18x20库使用

sensor.list来获取连接到raspi的所有传感器。我需要迭代这个列表函数的结果,如果数据库中不存在sensorId,我需要添加它。

到目前为止,我有以下代码,它检索传感器列表,迭代它们并在数据库中查找它们。

sensor.list(function(e, sensors){
  logger.debug("Sensors Found:");
  logger.debug(sensors);
  for(var i=0; i < sensors.length;i++){
    db.Sensor.find({
      where: { sensorId: sensors[i] }
    }).success(function(s){
      if (!s){
        ##sensors[i] is undefined here
        logger.debug('Adding Sensor '+sensors[i]+' To the database as it doesn\'t exist!');
        db.Sensor.create({
          sensorId: sensors[i],
          name: sensors[i]
        });
      }else{
        Sensors.push(s);
      }
    });
  }
});

1 个答案:

答案 0 :(得分:1)

问题是,当成功回调开始触发时,我的值为sensors.length

你可以像

那样接近它

&#13;
&#13;
sensor.list(function(e, sensors){
  
  /* This function returns the function which should 
  execute after callback with presnt i bound to it */
  function GnBindCb(i) {
  
     return function(s) {
      if (!s){
        ##sensors[i] is undefined here
        logger.debug('Adding Sensor '+sensors[i]+' To the database as it doesn\'t exist!');
        db.Sensor.create({
          sensorId: sensors[i],
          name: sensors[i]
        });
      }else{
        Sensors.push(s);
      }
    };
  
  }
  
  
  logger.debug("Sensors Found:");
  logger.debug(sensors);
  for(var i=0; i < sensors.length;i++){
    db.Sensor.find({
      where: { sensorId: sensors[i] }
    }).success(GnBindCb(i)());
  }
  
  
});
&#13;
&#13;
&#13;

有关此问题的更多输入,您可以参考this post on Stackoverflow