我们正试图通过利用include选项来续集来在Postgresql数据库中创建一条记录。但是,关联(注释)之一具有范围,而父(帖子)具有与具有该范围的子(注释)的关联。看来sequelize应该根据所提供的范围将值添加到某个字段,但是并没有这样做,相反,该字段保持空白。
我们正在使用sequelize,postgres,javascript,Express Router。
我们尝试添加注释关联(将其命名为“ as”属性),但这只会引发错误“地址使用别名与平民相关联。您必须使用” as”关键字来指定您的include语句中的别名。”
我们已经在将数据发送到sequelize模型之前对其进行了修改,这似乎可行,但似乎很hacky,我们更希望通过sequelize完成此操作,因为这似乎是其中的一部分功能。>
我们还可以手动将数据行添加到另一张表中,避免重复执行序列化操作,但是会遇到相同的问题,即它很容易破解。
createPage文件-包含用于创建页面的选项
const includeOptions = [{
model: models.post,
as: "specialPosts",
auditUser: request.nickname,
include: [{
model: models.comment,
// as: "postComments",
auditUser: request.nickname
}]
}];
/***** Modification of Data Mentioned Before Sending to Sequelize *****/
pageAttributes.posts[0].comment.commentableType = 'post';
/***** Create Page *****/
const createdPage = await models.pages.create(pageAttributes, queryOptions);
评论模型-commentableType字段
commentableType: {
type: DataTypes.ENUM([
COMMENTABLE_TYPE.POST,
COMMENTABLE_TYPE.IMAGE
]),
field: "commentable_type"
}
帖子模型-评论关联
Post.hasOne(models.comments, {
// as: "postComments",
foreignKey: {
name: "commentableId",
field: "commentable_id"
},
scope: {
commentable_type: COMMENTABLE_TYPE.POST
}
});
我们希望通过在主帖子中添加嵌套注释include,sequelize将知道将正确的枚举填充到commentable_type字段中。