sequelize.js关系validation

想象一下,我有两个模型:

var Movie = sequelize.define('movies', { /* model definition */ }) var Genre = sequelize.define('genres', { /* model definition */ }); Movie.hasMany(Genre); Genre.hasMany(Movie); 

如果我想规定一部电影至less要有一个types,那我该怎么做呢?

我已经看到了明显的地方。 我最初的想法是build(),validate()和save(),但是查看源.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(); } }); 

所以我想我需要实现某种自定义validation机制,但我不完全确定从哪里开始。

注意我正在维护我自己的Sequelize分支,所以这更像是一个问题,我可能会如何修改Sequelize源代码来完成我想要的工作,而不是将它们拼凑在一起。

您可以尝试在数据库中searchstream派对象,并为movie调用addGenre

 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(){}); }); 

这样你就会知道至less有1个types将被添加到提交的电影!