2015-12-06 83 views
-1

我试图创建使用sequelize用于node.js的所有文档CRUD一个简单的更新功能给了我类似的例子,所有导致同样的错误Sequelize文档更新

Error on update: { dataValues: 
{ sku: 'BBB123', 
qty_on_hand: 3, 
trigger_qty: 4, 
replenish_qty: 5, 
createdAt: Sun Dec 06 2015 15:31:08 GMT-0500 (EST), 
updatedAt: Sun Dec 06 2015 15:31:08 GMT-0500 (EST) }, 
_previousDataValues: 
{ sku: 'BBB123', 
qty_on_hand: 3, 
trigger_qty: 4, 
replenish_qty: 5, 
createdAt: Sun Dec 06 2015 15:31:08 GMT-0500 (EST), 
updatedAt: Sun Dec 06 2015 15:31:08 GMT-0500 (EST) }, 
_changed: {}, 
'$modelOptions': 
{ timestamps: true, 
instanceMethods: {}, 
classMethods: {}, 
validate: {}, 
freezeTableName: false, 
underscored: false, 
underscoredAll: false, 
paranoid: false, 
whereCollection: { sku: 'BBB123' }, 
schema: null, 
schemaDelimiter: '', 
defaultScope: null, 
scopes: [], 
hooks: {}, 
indexes: [], 
name: { plural: 'units', singular: 'unit' }, 
omitNull: false, 
sequelize: 
    { options: [Object], 
    config: [Object], 
    dialect: [Object], 
    models: [Object], 
    modelManager: [Object], 
    connectionManager: [Object], 
    importCache: {}, 
    test: [Object], 
    queryInterface: [Object] }, 
uniqueKeys: {}, 
hasPrimaryKeys: true }, 
'$options': 
{ isNewRecord: false, 
'$schema': null, 
'$schemaDelimiter': '', 
raw: true, 
attributes: 
    [ 'sku', 
    'qty_on_hand', 
    'trigger_qty', 
    'replenish_qty', 
    'createdAt', 
    'updatedAt' ] }, 
hasPrimaryKeys: true, 
__eagerlyLoadedAssociations: [], 
isNewRecord: false } 

我的代码如下所示:

// Update One units 
// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= 
_update = function(data,success,fail){ 
    // var cleanData = data.sanitize(item); 
    // if(!cleanData) return false; 
    unit.find({where:{sku:data.sku}}).then(function (err, data) { 
     if(err){ 
      console.log("Error on update: ", err); 
     } 
     if(data){ 
      data.updateAttributes({ 
       qty_on_hand:20 
      }).success(function (data) { 
       console.log("Success on update: ", data); 
      }) 
     } 
    }); 
} 
_update({sku:"BBB123"}); 

有人能告诉我我做错了什么吗?

回答

1

阅读承诺!你不会得到一个错误,但实际结果!

您是否想要发现承诺错误,请使用.catch(承诺方法,而不是关键字)。

你应该调整你这样的代码:

_update = function(data,success,fail){ 
    unit.find({where:{sku:data.sku}}) 
     .then(function (data) { 
     if(data){ 
      data.updateAttributes({ 
       qty_on_hand:20 
      }).success(function (data) { 
       console.log("Success on update: ", data); 
      }) 
     } 
     }).catch(function(err){ 
     console.trace(err). 
     }); 
} 

Sequelize使用蓝鸟的承诺,你可能想看看their documentation,这是相当强大的。