gpt4 book ai didi

node.js - Thinky ORM + RethinkDB - 多对多关系

转载 作者:搜寻专家 更新时间:2023-11-01 00:43:50 26 4
gpt4 key购买 nike

我在 Thinky 中处理 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 路由返回的结果有 friend ,但是当我稍后检索用户时,找不到关系。如果我在 RethinkDB Data Explorer 中查看,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 拒绝将这种关系视为存在。我做错了什么?

最佳答案

因为一个用户链接到另一个用户,你可以有一个循环引用(user1 是 user1 的 friend )。在这种情况下,为了避免出现 Maximum stack size exceeded 之类的错误,thinky 不会一直递归,需要您手动指定要保存的内容。

这应该有效:

user.saveAll({friends: true}).then(function(result){
res.json({user:result});
});

关于node.js - Thinky ORM + RethinkDB - 多对多关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25417796/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com