Продолжение: на что указывает db.model? - PullRequest
0 голосов
/ 09 мая 2020

Простите меня за неспособность предоставить точный код, однако я недавно помогал кому-то и столкнулся с некоторым странным поведением, которое показывает мне, что я не понимаю, как sequelize строит ссылки на модели. Мы получали неопределенную ошибку, когда пытались вызвать db.Todo.findAll (). Затем мы поняли, что наш код ищет «Todo» с заглавной буквы, и изменение первого параметра функции ниже с «todo» на «ToDo» исправило наш ошибка.

// Does not work
var ToDo = sequelize.define('todo', {
  title: Sequelize.STRING,
  description: Sequelize.TEXT
})

// Works
var ToDo = sequelize.define('ToDo', {
  title: Sequelize.STRING,
  description: Sequelize.TEXT
})

Вопрос: почему ?

В mysql наша таблица называется todo, а не ToDo. Мой коллега считает, что код должен уважать экспортируемую переменную ToDo, в то время как я предположил, что sequelize.define () прикрепил первый параметр в качестве метки в модели Sequelize ToDo и что после успешного доступа к db.ToDo, sequelize затем попытался получить доступ к todo и выдал нам ошибку, настолько похожую на ту, которую мы получили бы, если бы не смогли получить доступ к db.Todo, что это сбило нас с толку. Есть ли у кого-нибудь представление об этой проблеме? Кто-то из нас прав, или мы чего-то упускаем?

...