Последовательно создайте() с существующим связанным идентификатором в справочной таблице по имени столбца

#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 запроса. Это легко сделать, но это не то, чего я хочу. Я хотел, чтобы это было сделано в одном запросе с помощью «включить».