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

Node.js 如果数组中不存在新记录,则尝试添加新记录,node.js,raspberry-pi,sequelize.js,Node.js,Raspberry Pi,Sequelize.js,我正在编写一个基于nodejs的脚本,从树莓pi获取温度读数,在Sequelize部分将传感器添加到数据库时遇到了一些问题 sensor.list由ds18x20库用于将所有传感器连接到raspi。我需要遍历这个列表函数的结果,如果数据库中不存在sensorId,我需要添加它 到目前为止,我有以下代码,它检索传感器列表,对它们进行迭代,并在数据库中查找它们 sensor.list(function(e, sensors){ logger.debug("Sensors Found:");

我正在编写一个基于nodejs的脚本,从树莓pi获取温度读数,在Sequelize部分将传感器添加到数据库时遇到了一些问题

sensor.list
由ds18x20库用于将所有传感器连接到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);
      }
    });
  }
});
传感器列表(功能(e,传感器){
调试(“找到的传感器:”);
调试(传感器);
对于(变量i=0;i
问题是,当成功回调开始触发时,我将拥有
sensors.length的值

你可以这样做

传感器列表(功能(e,传感器){
/*此函数返回应该执行的函数
使用绑定到它的presnt i在回调后执行*/
函数GnBindCb(i){
返回函数{
如果(!s){
##此处未定义传感器[i]
debug('将传感器'+sensors[i]+'添加到数据库中,因为它不存在!');
db.Sensor.create({
传感器ID:传感器[i],
名称:传感器[i]
});
}否则{
传感器。推;
}
};
}
调试(“找到的传感器:”);
调试(传感器);
对于(变量i=0;i});谢谢,我最终使用了findOrCreate,但您的示例和链接提供了对范围的一些见解。