我在思考中遇到了让n-n关系发挥作用的问题:
下面是定义模型的代码:
module.exports = function(thinky){
var User = thinky.createModel("User",{
SNIP: A Bunch of properties
});
User.hasAndBelongsToMany(User,"friends","id","id");
return User;
}下面是添加朋友的路线。
router.route('/user/:user_id/addFriend')
.post(function(req,res){
User.get(req.params.user_id).run().then(function(user){
User.get(req.body.id).run().then(function(friend){
if(!user.friends){
user.friends = [friend];
}else{
user.friends.push(friend);
}
user.saveAll().then(function(result){
res.json({user:result});
});
});
},function(err){
console.log(err);
res.status(400).json({error:err});
});
});在addFriend路由上返回的结果有一个朋友,但是当我稍后检索用户时,这种关系是无处可见的。如果我查看RethinkDB数据资源管理器,thinky已经为关系创建了User_User表,其中包含以下数据:
[
{
"id": "8f08de10-6f3c-486e-958a-cb0e05b79244_de484182-5aab-4773-a374-e0ba292f7f80" ,
"id_id": [
"de484182-5aab-4773-a374-e0ba292f7f80" ,
"8f08de10-6f3c-486e-958a-cb0e05b79244"
]
}
]但是Thinky拒绝认为这种关系是存在的。我做错了什么?
发布于 2014-08-21 18:30:33
因为一个用户被链接到另一个用户,所以您可以有一个循环引用(user1是user1的朋友)。在这种情况下,为了避免出现超出最大堆栈大小的错误,thinky不会继续递归,并要求您手动指定要保存的内容。
这应该是可行的:
user.saveAll({friends: true}).then(function(result){
res.json({user:result});
});https://stackoverflow.com/questions/25417796
复制相似问题