0

私は node.js に Vogels DynamoDB データ マッパーを使用しています。DynamoDB (AWS 上) で作業するのに非常に苦労しています。DynamoDB ローカルの場合、問題はありません。スキーマをセットアップし、node.js アプリで完全に機能します

ただし、AWS にデプロイすると、次のエラーが発生します。

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

問題は、最新バージョンの Vogels ( https://github.com/ryanfitz/vogels )を使用していることです。

では、なぜ新しい API に移行するように言われているのでしょうか?

4

1 に答える 1

0

callbackindefineは Vogels 2.0 で削除されました: https://github.com/ryanfitz/vogels/commit/6d5e70e4fdcfd5f28058298bc63cf749d15837a9

の 2 番目のパラメーターdefineは schema になりました。関数を 2 番目のパラメーターとして渡すと、Vogel は 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そのため、呼び出しの 2 番目のパラメーターを確認してください。これは、関数ではなく、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)
    }
  }
});
于 2016-12-24T10:35:24.940 に答える