【问题标题】:How pass items from ref ObjectId's?如何从 ref ObjectId 传递项目?
【发布时间】:2020-07-21 04:13:54
【问题描述】:

我正在尝试建立一个小型的个人博彩网站。我设法在每个集合中引用另一个集合中的 ObjectId 数组。 但是现在我很难将这些集合中的项目放入视图页面。我怎样才能获得更多的 ObjectId 并传递项目。 我在看.populate()。这是要走的路吗?如果是这样,在这种情况下,我可以使用来自猜测架构的信息的用户(引用匹配架构)

//route//


router.get("/:id", function(req, res){
    User.findById(req.params.id)
    .populate("guess")
    .exec(function(err,foundUser){
        if(err){
            console.log(err);
        } else {
            res.render("users/show",{user:foundUser});
    }
 });
});


-----------------------
//viewPage//


<%user.guessList.forEach(function(guess){%>
  <div> <%= guess %></div> //need items of this guesses
<% }) %>
------------------

架构如图所示

【问题讨论】:

  • 你好,我不能说这个网站的其他用户,但对我来说,我需要更多信息,这样我才能帮助你。你能更好地解释你想要什么吗?
  • 当您使用populate("guess") 时,我不确定它是否正确,因为您在User 上没有Guess。在其他要填充的情况下,您需要在要填充的模式中拥有要填充的模型。在这里看我的一个例子:stackoverflow.com/questions/60727064/…
  • 你要么需要修正你的代码中的一些东西,要么更好地解释你想要什么。
  • 该网站的理念是:用户可以对足球比赛进行猜测。 users 数据库将包含一个数组,其中包含他们所做的所有猜测,Match 数据库将包含所有与那里的球队/分数进行的比赛以及guessesID 的数组,这个guessesID 对包含guess/userID/matchID 的de GuessModel 的引用,所以每个模型包含对其他模型的引用,该部分有效。但是现在,如果我例如尝试了解用户所做的所有猜测,我应该得到这些 id 的项目。获取 ID 似乎可行,但它们不包含项目。

标签: javascript mongodb express mongoose ejs


【解决方案1】:

我不确定我是否理解您想要的,但如果我理解了,您需要在其他中修复您的架构以实现您想要的。我会尝试添加它们,你自己测试它们;您可能需要根据复杂程度发布其他问题。

当您说“用户数据库将包含一个包含他们所做的所有猜测的数组”时。我相信这就是你想要的:

首次建议修改

guesslist: [{ type: mongoose.SchemaTypes.ObjectId, ref: "Guess" }];// this will make possible for you to populate with Guess models

当你 populate 试试这个:

populate("guesslist");//it should be the name of the field to be populated

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-06-25
    • 2017-08-20
    • 1970-01-01
    • 1970-01-01
    • 2013-07-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多