Вот некоторые вопросы о функциях, поддерживаемых sequelize (sequelize project site), что я хотел бы прояснить, прежде чем решить, стоит ли его использовать:sequelize для NodeJS: поддерживаются ли эти функции?
Цепной (КПД): При объединении нескольких запросов, которые они собраны в один запрос к базе данных (как пакет операций) или каждый отправляется отдельно?
Цепочка (успех/ошибка): при соединении нескольких запросов, когда происходит событие успеха и что происходит при ошибке? Исключен ли «успех», только если все операции преуспели? И если произошла ошибка, откатываются ли все операции (т. Е. Являются цепными операциями, рассматриваемыми как транзакция)
Фильтрационные ассоциации: Скажем, объект
Crowd
имеет отношениеCrowd.hasMany(Person)
. Вы можете получить всех связанных людей, выполнивcrowd.getPersons()
, но можно ли выбрать их подмножество, напримерcrowd.getPersons({where: { age: 30 }})
?Начало, связанные объекты, связанные с двумя или более этапов: Скажите
Crowd
объект как отношениеCrowd.hasMany(Person)
иPerson
имеет отношениеPerson.hasMany(Pet)
. Можно ли получить всех домашних животных в толпе, выполнив что-то вродеcrowd.getPersons().getPets()
, и если да, то это будет отправлено как несколько запросов к базе данных или только один запрос?"Deep" объект: Я хочу, чтобы определить человека в качестве объекта:
sequelize.define('Person', { name: { first: <a string>, last: <a string> } });
ли это разрешено? (Обратите внимание, что имя не будет столбцом таблицы базы данных, но первым и последним будет)
«Рассчитанный» объект: возможно ли добавить поле к объекту, которое вычисляется из других полей объект? Например:
sequelize.define('Person', { name: { first: <a string>, last: <a string>, full: <name.first + ' ' + name.last> // <-- this field } });
Так что
name.full
поле фактически не хранятся в базе данных (которая является пустой тратой пространства), а просто рассчитывается из двух других?
Так что для # 2, если есть ошибка с одним из запросов, он будет откатить все запросы (как произошло бы в сделке)? Или цепочка запросов не рассматривается как транзакция? – bigpopakap
они не рассматриваются как транзакция, но выполнены счастливо отделены друг от друга и возвращают все возникшие ошибки в качестве результата. – sdepold
Было бы неплохо, если бы вместо возможности добавления методов экземпляра, если бы вы могли определить геттеры и сеттеры, которые были используется при сериализации объекта. – freakTheMighty