#sequelize.js
Вопрос:
Есть ли способ быстро получить идентификатор по имени через ассоциацию, не создавая строку в ассоциации?
Допустим, у меня есть ассоциация
module.exports = (sequelize, DataTypes) =gt; { const ApiKey = sequelize.define( "ApiKey", { id: { type: DataTypes.INTEGER, primaryKey: true, autoIncrement: true, allowNull: false, }, PermissionId: { type: DataTypes.INTEGER, }, }, { timestamps: true, } ); ApiKey.associate = function (models) { ApiKey.belongsTo(models.Permission); }; return ApiKey; };
Я хочу, чтобы это можно было получить в одном запросе:
models.ApiKey.create( { PermissionId: 'Automatically get ID by some select', }, { include: [{ model: models.Permission }], } );
Я в состоянии сделать это так (чего я не хочу):
models.ApiKey.create( { PermissionId: literal( `(SELECT id FROM Permission WHERE name = 'guest')` ),, }, );
Ответ №1:
Как насчет такой установки, как :
models.Permission.findOne({ where: { name: 'guest' } }).then(function (permission) { models.ApiKey.create( { PermissionId: permission.id }, ); });
Комментарии:
1. Это 2 запроса. Это легко сделать, но это не то, чего я хочу. Я хотел, чтобы это было сделано в одном запросе с помощью «включить».