Ошибка Vogels DynamoDB для перехода на более новые API

Я использую маппер данных Vogels DynamoDB для node.js - и мне было очень тяжело работать в 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?

1 ответ

callback в define был удален в 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

Так что проверьте второй параметр в вашем 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)
    }
  }
});
Другие вопросы по тегам