Вот несколько вопросов о функциях, поддерживаемых sequelize ( сайт проекта sequelize ), которые я хотел бы прояснить, прежде чем решать, использовать ли его:
Цепочка (эффективность): при объединении нескольких запросов они собираются в один запрос к базе данных (как пакет операций), или каждый из них отправляется отдельно ?
Цепочка (успех / ошибка): когда происходит объединение нескольких запросов в цепочку, и что происходит при ошибке? Выдается ли «успех» только в том случае, если все операции выполнены успешно? И если произошла ошибка, откатываются ли все операции (т. Е. Связанные операции, обрабатываемые как транзакция)
Фильтрация ассоциаций: скажем, объект Crowd
имеет отношение Crowd.hasMany (Person )
. Вы можете получить всех связанных людей, казнив толпу.getPersons ()
, но можно ли выбрать их подмножество, например crow.getPersons ({where: {age: 30}})
?
Получение связанных объектов, связанных между собой два или более шагов: скажите, что объект Crowd
как отношение Crowd.hasMany (Person)
и Person
имеет отношение Person.hasMany (Pet)
. Можно ли получить всех питомцев людей в толпе, выполнив что-то вроде crow.getPersons (). GetPets ()
, и если да, это будет отправлено как несколько запросов в базу данных или только один request?
"Глубокий" объект: я хочу определить человека как объект:
sequelize.define ('Person', {
название: {
сначала: ,
последний:
}
});
Это разрешено? (Обратите внимание, что имя не будет столбцом таблицы базы данных, а будет первым и последним)
«Вычисляемый» объект: Можно ли добавить к объекту поле, которое вычисляется из других полей объекта ? Например:
sequelize.define ('Человек', {
название: {
сначала: ,
последний: ,
full: //
Чтобы поле name.full
на самом деле не сохранялось в базе данных (что является пустой тратой места), а просто рассчитывалось на основе двух других?