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

现在的第二个参数define是模式。如果您将函数作为第二个参数传递,则会收到此错误,因为 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。那应该是 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 回答