2017-09-06 1 views
0

최근 Sequelize에서 bulkCreate를 수행 할 때 몇 가지 문제가 발생했습니다. 나는 다음과 같은 오류 있어요 :sequelize BulkCreate가 'set'속성을 읽을 수 없습니다. 정의되지 않음

TypeError: Cannot read property 'set' of undefined 
at results.forEach (/Users/mzd/Desktop/Shroogal/shroogal-dev/node_modules/sequelize/lib/model.js:2357:27) 
at Array.forEach (<anonymous>) 
at QueryInterface.bulkInsert.then.results (/Users/mzd/Desktop/Shroogal/shroogal-dev/node_modules/sequelize/lib/model.js:2356:21) 
at tryCatcher (/Users/mzd/Desktop/Shroogal/shroogal-dev/node_modules/sequelize/node_modules/bluebird/js/release/util.js:16:23) 
at Promise._settlePromiseFromHandler (/Users/mzd/Desktop/Shroogal/shroogal-dev/node_modules/sequelize/node_modules/bluebird/js/release/promise.js:512:31) 
at Promise._settlePromise (/Users/mzd/Desktop/Shroogal/shroogal-dev/node_modules/sequelize/node_modules/bluebird/js/release/promise.js:569:18) 
at Promise._settlePromise0 (/Users/mzd/Desktop/Shroogal/shroogal-dev/node_modules/sequelize/node_modules/bluebird/js/release/promise.js:614:10) 
at Promise._settlePromises (/Users/mzd/Desktop/Shroogal/shroogal-dev/node_modules/sequelize/node_modules/bluebird/js/release/promise.js:693:18) 
at Async._drainQueue (/Users/mzd/Desktop/Shroogal/shroogal-dev/node_modules/sequelize/node_modules/bluebird/js/release/async.js:133:16) 
at Async._drainQueues (/Users/mzd/Desktop/Shroogal/shroogal-dev/node_modules/sequelize/node_modules/bluebird/js/release/async.js:143:10) 
at Immediate.Async.drainQueues (/Users/mzd/Desktop/Shroogal/shroogal-dev/node_modules/sequelize/node_modules/bluebird/js/release/async.js:17:14) 
at runCallback (timers.js:781:20) 
at tryOnImmediate (timers.js:743:5) 
at processImmediate [as _immediateCallback] (timers.js:714:5) 

을 그리고 이것은 내 sequelize 마이그레이션 파일입니다

module.exports = function(sequelize, DataTypes) { 
return sequelize.define('documentsInstruments', { 
docid: { 
    type: DataTypes.INTEGER(11), 
    allowNull: false, 
    primaryKey: true, 
    autoIncrement: true, 
    field: 'docid' 
}, 
iid: { 
    type: DataTypes.BIGINT, 
    allowNull: true, 
    references: { 
    model: 'EntityInstruments', 
    key: 'IID' 
    }, 
    field: 'IID' 
}, 
docType: { 
    type: DataTypes.STRING(45), 
    allowNull: true, 
    field: 'docType' 
}, 
docPath: { 
    type: DataTypes.STRING(200), 
    allowNull: true, 
    field: 'docPath' 
}, 
creationDate: { 
    type: DataTypes.DATE, 
    allowNull: true, 
    field: 'creationDate' 
}, 
addlInfo: { 
    type: DataTypes.STRING(500), 
    allowNull: true, 
    field: 'addlInfo' 
}, 
posLabel: { 
    type: DataTypes.STRING(45), 
    allowNull: true, 
    field: 'posLabel' 
}, 
active: { 
    type: DataTypes.STRING(3), 
    allowNull: true, 
    defaultValue: 'Y', 
    field: 'active' 
}, 
origFileName: { 
    type: DataTypes.STRING(400), 
    allowNull: true, 
    field: 'origFileName' 
} 
}, { 
    tableName: 'Documents_Instruments' 
}); 
}; 

그리고 이것은 내 bulkCreate 함수이다 : 나는 소스 코드를 확인

  if(obj.documents) { 
      let data = []; 
      obj.documents.forEach((v, i) => { 
       var d = {}; 

       if(v.docid) 
        d.docid     = v.docid; 

       if(obj.iid) 
        d.iid     = obj.iid; 

       if(v.type) 
        d.docType    = v.type; 

       if(v.filePath) 
        d.docPath    = v.filePath; 

       if(v.date) 
        d.creationDate   = v.date; 

       if(v.additionalDescription) 
        d.addlInfo    = v.additionalDescription; 

       if(v.originalName) 
        d.origFileName   = v.originalName; 

       data.push(d); 
       }); 

       this.documentsInstruments 
       .bulkCreate(data, { 
        updateOnDuplicate: ['docType', 'docPath', 'creationDate', 'addlInfo', 'origFileName'] 
       }) 
       .then((d) => { 
       resolve(d); 
       }) 
       .catch((err) => { 
       reject(err); 
       }); 

     } 

(node_modules/sequelize/lib 디렉토리/model.js : 2357 : 27)하고, 인스턴스가 [내가] this.QueryInterface.bulkInsert 기능에 UNDEFINE 될 디버깅을 위해 뭔가를 인쇄하려고

답변

0

같은 문제가있어서 그 오류가 왜 발생했는지 알 수 없었습니다.

하지만 라이브러리 버전을 v4.4.2에서 4.11.0으로 업그레이드하면 더 이상 오류가 표시되지 않습니다.

최신 버전이 아닌 경우 버전을 업그레이드하십시오.

+0

예, 오류를 더 이상 보지 못했습니다. Sequelize가 그것을 고쳤을 수도 있습니다. 어쨌든 고마워. –

관련 문제