Javascript 不断获得;超过最大调用堆栈大小;使用猫鼬

Javascript 不断获得;超过最大调用堆栈大小;使用猫鼬,javascript,node.js,mongodb,express,mongoose,Javascript,Node.js,Mongodb,Express,Mongoose,我正在尝试添加好友的功能。这个代码段处理它 Router.route("/confirm_friend").post(function(req, res) { UserSchema.findOne({ _id: req.body.self }).then( (self) => { UserSchema.findOne({ _id: req.body.whom }).then( (whom) => { self.friends

我正在尝试添加好友的功能。这个代码段处理它

Router.route("/confirm_friend").post(function(req, res) {
  UserSchema.findOne({ _id: req.body.self }).then(
    (self) => {
      UserSchema.findOne({ _id: req.body.whom }).then(
        (whom) => {
          self.friends.push(whom)
          whom.friends.push(self);
          self.requests.splice(self.requests.indexOf(whom), 1);
          self.save();
          whom.save();
          res.send("success");
        },
        (err) => {
          res.send(err);
          console.log("--- err", err);
        },
      );
    },
    (err) => {
      console.log("--- err", err);
    },
  );
});
如您所知,我正在通过POST接收两个ID。我在模式中查找它们,然后将彼此推送到好友列表。在此之后,我执行
.save()
res.send(“成功”)
一切似乎都很好,但我一直在这样做:

/Users/shchypylov/Documents/projects/personal/social/node_modules/mongoose/lib/utils.js:249 函数cloneObject(对象,选项){ ^ RangeError:超出了最大调用堆栈大小 在cloneObject(/Users/shchypylov/Documents/projects/personal/social/node_modules/mongoose/lib/utils.js:249:21) 克隆时(/Users/shchypylov/Documents/projects/personal/social/node_modules/mongoose/lib/utils.js:183:16) 在cloneObject(/Users/shchypylov/Documents/projects/personal/social/node_modules/mongoose/lib/utils.js:257:11) 克隆时(/Users/shchypylov/Documents/projects/personal/social/node_modules/mongoose/lib/utils.js:183:16) 在cloneObject(/Users/shchypylov/Documents/projects/personal/social/node_modules/mongoose/lib/utils.js:257:11) 克隆时(/Users/shchypylov/Documents/projects/personal/social/node_modules/mongoose/lib/utils.js:183:16) 在cloneObject(/Users/shchypylov/Documents/projects/personal/social/node_modules/mongoose/lib/utils.js:257:11) 克隆时(/Users/shchypylov/Documents/projects/personal/social/node_modules/mongoose/lib/utils.js:183:16) 在cloneObject(/Users/shchypylov/Documents/projects/personal/social/node_modules/mongoose/lib/utils.js:257:11) 克隆时(/Users/shchypylov/Documents/projects/personal/social/node_modules/mongoose/lib/utils.js:183:16) 在cloneObject(/Users/shchypylov/Documents/projects/personal/social/node_modules/mongoose/lib/utils.js:257:11) 克隆时(/Users/shchypylov/Documents/projects/personal/social/node_modules/mongoose/lib/utils.js:183:16) 在cloneObject(/Users/shchypylov/Documents/projects/personal/social/node_modules/mongoose/lib/utils.js:257:11) 克隆时(/Users/shchypylov/Documents/projects/personal/social/node_modules/mongoose/lib/utils.js:183:16) 在cloneObject(/Users/shchypylov/Documents/projects/personal/social/node_modules/mongoose/lib/utils.js:257:11) 克隆时(/Users/shchypylov/Documents/projects/personal/social/node_modules/mongoose/lib/utils.js:183:16) [nodemon]应用程序崩溃-正在等待文件更改,然后再启动


我如何解决它?

通常这个符号循环引用问题(一个对象引用另一个对象,反之亦然)…如果我猜,它会导致
self.friends.push(谁)
who.friends.push(自我)
。这是循环引用。@bigless hm..那么我将如何实现向彼此列表中添加好友?我不熟悉任何sql数据库,但我认为它应该通过对象id引用,这是一个可搜索的问题