关于真正地update,本人的做法
if (id) { //如果是更新旧的数据
Movie.findById(id, function (err, movie) { //找到movies下,这部电影的数据
if (err) {
console.log(err);
}
var oldCategoryId = movie.category; //旧的category
var newCategoryId = movieObj.category; //新的category
_movie = underscore.extend(movie, movieObj); //新的对象替换旧的
_movie.save(function (err, movie) { //保存好到movies(更新,同时对应的category也会跟着更新,因为都是movieObj下的内容)
if (err) {
console.log(err);
}
Category.findById(newCategoryId, function (err, newCategory) { //找到想插入的新的分类
if (err) {
console.log(err);
}
newCategory.movies.push(id);
newCategory.save(function (err, result1) {
if (err) {
console.log(err);
}
Category.findById(oldCategoryId, function (err, oldCategory) { //更新旧的这个分类
if (err) {
console.log(err);
}
oldCategory.movies.forEach(function (item, idx, arr) {
if (item == id) { //找到movies数组下这部电影的id
oldCategory.movies.splice(idx, 1) //删除这个元素
oldCategory.save(function (err, result2) {
if (err) {
console.log(err);
}
res.redirect('/movie/' + movie._id) //更新完毕跳转到详情页
})
}
})
})
})
})
})
})
}