首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Thinky + RethinkDB --许多到多个关系

Thinky + RethinkDB --许多到多个关系
EN

Stack Overflow用户
提问于 2014-08-21 03:29:12
回答 1查看 884关注 0票数 2

我在思考中遇到了让n-n关系发挥作用的问题:

下面是定义模型的代码:

代码语言:javascript
复制
module.exports = function(thinky){
  var User = thinky.createModel("User",{
    SNIP: A Bunch of properties
  });

  User.hasAndBelongsToMany(User,"friends","id","id");

  return User;
}

下面是添加朋友的路线。

代码语言:javascript
复制
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表,其中包含以下数据:

代码语言:javascript
复制
[
{
"id":  "8f08de10-6f3c-486e-958a-cb0e05b79244_de484182-5aab-4773-a374-e0ba292f7f80" ,
"id_id": [
"de484182-5aab-4773-a374-e0ba292f7f80" ,
"8f08de10-6f3c-486e-958a-cb0e05b79244"
]
}
]

但是Thinky拒绝认为这种关系是存在的。我做错了什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-08-21 18:30:33

因为一个用户被链接到另一个用户,所以您可以有一个循环引用(user1是user1的朋友)。在这种情况下,为了避免出现超出最大堆栈大小的错误,thinky不会继续递归,并要求您手动指定要保存的内容。

这应该是可行的:

代码语言:javascript
复制
user.saveAll({friends: true}).then(function(result){
  res.json({user:result});
});
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25417796

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档