Sats Js:在一个表(模型)中插入(创建)多个对象,跳过现有的行(对象)

时间:2016-01-26 09:19:06

标签: javascript node.js express sails.js

如何在跳过现有行时在表格中插入一个对象数组。 我有一个定义模型。

//Test.js
module.exports={
  tableName:'test',
  connection: 'mysqlServer',
  attributes:{
    id:{
      type:'integer',
      primaryKey:true
    },
    name:{
      type:'string'
    }
  }
};

在测试表中我已经有了

-----------------
|id       name  |
-----------------
|1        AB1   |
|2        AB2   |
-----------------

var arrData=[
  {3,'AB3'},
  {4,'AB4'},
  {2,'AB2'},  //skip this object proceeding to next
  {5,'AB5'},
  {6,'AB6'},
  {7,'AB7'}
]

我想将这个arrData推送到我的测试表但执行

Test.create(arrData).exec(function(err,rows){
    if(err)
      throw err;
    else
      console.log(rows)
})
只要找到{2,'AB2'},

就会停止但是我想跳过这个对象并继续推送其余的对象并存储表中现有的对象的id以表示。

我如何实现目标

1 个答案:

答案 0 :(得分:0)

无论如何我想通了。 解决方案使用async:

var async=require('async');
var arrData=[
  {3,'AB3'},
  {4,'AB4'},
  {2,'AB2'},  //skip this object proceeding to next
  {5,'AB5'},
  {6,'AB6'},
  {7,'AB7'}
]
var arrLen=arrData.length,i=0;
var errData=[];
async.whilst(
  function(){
    return i<arrLen;
  },function(callback){
    Test.create(arrData[i]).exec(function(err,data){
      if(err){
        errData.push(arrData[i]);
      }
      callback(null,i++);
    });
  },function(err,n){
    console.log(errData);//These are the data where error encountered!!!
  });

如果有人有其他解决方案,请分享....