想象一下我有两个模特:
var Movie = sequelize.define('movies', {
/* model definition */
})
var Genre = sequelize.define('genres', {
/* model definition */
});
Movie.hasMany(Genre);
Genre.hasMany(Movie);如果我想规定一部电影必须至少有一种类型,我该怎么做呢?
我看过那些显而易见的地方。我最初的想法是构建()、验证()和保存(),但是查看源.validate()只适用于模型定义中定义的字段。
例如:
Genre.find({where:{'name':'horror})
.success(function (horrorGenre) {
var movie = Movie.build({..});
movie.addGenre(horrorGenre);
if (! movie.validate()) { // This doesn't consider related data
movie.save();
}
});因此,我想我需要实现某种自定义验证机制,但我不完全确定从哪里开始。
注意,我正在维护自己的分叉后遗症,所以这更多地是一个问题,我如何修改后遗症源代码来做我想做的事情,而不是拼凑一个令人讨厌的可靠实现。
发布于 2013-05-03 11:06:33
您可以尝试在数据库中搜索类型对象,并调用addGenre for movie。
Genre.findall({where:{'name':["genre1","genre1"]})
.success(function (genres) {
if(genres.length==0){
console.log("Genres were not found!");
// exit somehow maybe res.json(200,{"msg","not ok"});
}
var movie = Movie.build({..});
var queryChainer = new Sequelize.Utils.QueryChainer;
for(var i = 0 ; i != genres.length ; i++){
queryChainer.add(movie.addGenre(genres[i].id));
}
queryChainer.run().success(function(){}).error(function(){});
});这样你就会知道至少有一个类型将被添加到提交的电影!
https://stackoverflow.com/questions/16354918
复制相似问题