这是非常基本的,应该可以工作..但是不能。所以首先我的模型:
const Conversation = sequelize.define('Conversation', {
name: {
type: DataTypes.STRING,
allowNull: false
},
...
})
Conversation.associate = (models, options) => {
Conversation.hasOne(models.Audio, options)
}
和:
module.exports = (sequelize /*: sequelize */ , DataTypes /*: DataTypes */ ) => {
const Audio = sequelize.define("Audio", {
name: {
type: DataTypes.STRING,
unique: true,
allowNull: true
},
})
Audio.associate = (models, options) => {
Audio.belongsTo(models.Conversation, options)
}
我有一个做的模型加载器:
fs.readdirSync(`${__dirname}`)
.filter((modelFile) => {
return path.extname(modelFile) === '.js' && modelFile !== 'index.js'
})
.map((modelFile) => {
let model = sequelize.import(`./${modelFile}`)
models[model.name] = model
return model
})
.filter((model) => models[model.name].associate)
.forEach((model) => {
models[model.name].associate(models, {
hooks: true,
onDelete: 'CASCADE'
});
})
因此,它为所有定义了该模型的模型调用associate
方法。通过.sync
可以在ConversationId
表中创建Conversations
字段。
当我尝试执行时:
let updAudio = { ConversationId, name: 'myname' } await global.db.models.Audio.create(updAudio, { logging: console.log })
ConversationId
不为空,但是当它保存在数据库中时,它为空。我已经检查了一百次。原始查询如下所示:
INSERT INTO "Audios" ("id","name","createdAt","updatedAt") VALUES (DEFAULT,'myname','2019-10-20 19:59:18.139 +00:00','2019-10-20 19:59:18.139 +00:00') RETURNING *;
那么
ConversationId
怎么了?
这是非常基本的,应该可以工作..但是不能。所以首先我的模型:const Conversation = sequelize.define('Conversation',{名称:{类型:DataTypes.STRING,...
您可能需要在模型定义中添加外键: