Я думаю, что сделал достаточно исследований по этому вопросу, и у меня только головная боль.
Вот что я сделал и понял: я реструктурировал свою базу данных MySQL, чтобы сохранить свои пользовательские данные в разных таблицах, я использую внешние ключи. До сих пор я только пришел к выводу, что внешние ключи используются только для согласованности и контроля, и они не автоматизируют и не делают что-либо еще (например, чтобы вставлять данные о том же пользователе в две таблицы, мне нужно использовать два отдельных оператора insert и внешний ключ не поможет сделать это иначе или автоматическим в некотором роде).
Хорошо. Вот что я хочу сделать: я хочу использовать Sequelize для вставки, обновления и извлечения данных из всех связанных таблиц сразу, и я не имею абсолютно никакого представления о том, как это сделать. Например, если пользователь регистрируется, я хочу иметь возможность вставлять данные в таблицу "A", содержащие некоторую пользовательскую информацию, и в той же самой задаче вставить в таблицу B некоторые другие данные (например, пользовательские настройки в выделенной таблице или без разницы). То же самое с retrievals, я хочу иметь возможность получить объект (или массив) со всеми связанными данными из разных таблиц, соответствующих критериям, которые я хочу найти.
Sequelize документация охватывает вещи таким образом, что каждая вещь зависит от предыдущей, а Sequelize довольно раздута с большим количеством вещей, которые мне не нужны. Я не хочу использовать.sync(). Я не хочу использовать миграции. У меня уже создана структура моей базы данных, и я хочу, чтобы Sequelize присоединялся к ней.
Можно ли вставлять и извлекать несколько строк, связанных в одно и то же время, и получать/использовать одну команду/объект Sequelize? Как?
Опять же, по "связанным данным" я имею в виду данные, "связанные", разделяя один и тот же внешний ключ.
Можно ли вставлять и извлекать несколько строк, связанных в одно и то же время, и получать/использовать одну команду/объект Sequelize? Как?
Да. Вам нужна активная загрузка.
Посмотрите следующий пример
const User = sequelize.define('user', {
username: Sequelize.STRING,
});
const Address = sequelize.define('add', {
address: Sequelize.STRING,
});
const Designation = sequelize.define('designation', {
designation: Sequelize.STRING,
});
User.hasOne(Address);
User.hasMany(Designation);
sequelize.sync({ force: true })
.then(() => User.create({
username: 'test123',
add: {
address: 'this is dummy address'
},
designations: [
{ designation: 'designation1' },
{ designation: 'designation2' },
],
}, { include: [Address, Designation] }))
.then(user => {
User.findAll({
include: [Address, Designation],
}).then((result) => {
console.log(result);
});
});
В console.log
вы получите все данные со всеми связанными с ними моделями, которые вы хотите включить в запрос