seqeulize model include(eager loading)创建嵌套对象,即使它们在数据库中不存在,也会导致所有字段为null的对象。 例如:
poll.server.model.js
module.exports = function(sequelize, DataTypes) {
var Poll = sequelize.define('Poll', {
// fields
},
{
associate: function(models){
Poll.hasMany(models.Comment, {foreignKey:'poll_id', foreignKeyConstraint: true})
}
}
);
return Poll;
};
comment.server.model.js
module.exports = function(sequelize, DataTypes) {
var Comment = sequelize.define('Comment', {
// fields
},
{
associate: function(models){
Comment.belongsTo(models.Poll, {foreignKey: 'poll_id'})
}
}
);
return Comment;
};
这是控制器上的功能(简称)
db.Poll.findAll({include:model:db.Comments}).then(function(polls){
res.jsonp(polls);
});
当我加载一个包含数据库中存在注释的民意调查时,一切运行良好。问题是,当我加载一个没有注释的民意调查时,我仍然有一个注释数组,包含一个所有字段为null的单个对象
$$hashKey: "2LA"
comment_date_inserted: null
comment_date_updated: null
comment_fingerprint: null
comment_id: null
comment_parent_id: null
comment_text: null
comment_text_raw: null
comment_title: null
comments: Array[1]
poll_id: null
poll_option_id: null
user: Array[1]
user_id: null
对于我做的任何其他热切加载也是如此(注意注释:数组[1] - >子注释(不存在)和user:Array [1] - >所有字段为空的对象)
我的问题是: 1 - 为什么会发生这种情况? 2 - 我做错了什么/我在包含部分做错了什么? 3 - 我是否可以在include中有条件,例如,如果所有字段都为null,则不包括?