2016-12-24 26 views
0

我使用Vogels DynamoDB數據映射器爲node.js - 並且一直在DynamoDB(在AWS上)工作真的很困難。對於DynamoDB本地,有NO問題 - 它建立了模式,並在node.js應用程序中完美工作。Vogels DynamoDB錯誤,以遷移到較新的api

然而,部署到AWS時 - 收到以下錯誤:

Details:Error: define no longer accepts schema callback, migrate to new api 

的事情是,我使用的是最新版本的VOGELS(https://github.com/ryanfitz/vogels

那麼爲什麼說遷移到一個新的API?

回答

0

callbackdefine在VOGELS 2.0除去: https://github.com/ryanfitz/vogels/commit/6d5e70e4fdcfd5f28058298bc63cf749d15837a9

define的第二個參數是現在的模式。如果你將一個函數作爲第二個參數,你得到這個錯誤,因爲沃格爾認爲your're嘗試使用VOGELS 1.x中:

if(_.isFunction(config)) { 
    throw new Error('define no longer accepts schema callback, migrate to new api'); 
} 

來源:https://github.com/ryanfitz/vogels/commit/6d5e70e4fdcfd5f28058298bc63cf749d15837a9#diff-6d186b954a58d5bb740f73d84fe39073R121

所以在檢查第二個參數的define來電。這應該是JSON格式的模式,而不是函數。來自官方文檔的示例:

var Account = vogels.define('Account', { 
    hashKey : 'email', 

    // add the timestamp attributes (updatedAt, createdAt) 
    timestamps : true, 

    schema : { 
    email : Joi.string().email(), 
    name : Joi.string(), 
    age  : Joi.number(), 
    roles : vogels.types.stringSet(), 
    settings : { 
     nickname  : Joi.string(), 
     acceptedTerms : Joi.boolean().default(false) 
    } 
    } 
});