【问题标题】:Mongoose retrieval of info from multiple collectionsMongoose 从多个集合中检索信息
【发布时间】:2013-10-23 19:02:59
【问题描述】:

我正在使用 Mongoose 和 Express 构建简历构建应用。我设置了我的模型,以便教育和工作经验都在他们自己的收藏中。类似的东西:

"degree" : "BA",
"major" : "Econ",
"minor" : "Bus. Admin",
"startDate" : ISODate("2013-12-31T00:00:00Z"),
"endDate" : ISODate("2013-01-01T00:00:00Z"),
"user" : "example@gmail.com",
"created" : ISODate("2013-10-15T19:32:09.357Z"),
"_id" : ObjectId("525d9839ddc8bf7855000001"),
"school" : {
    "name" : "university of alabama",
    "loc" : "austin, tx"
},
"__v" : 0

我在“用户”值中引用了用户模型的 _id。我的用户模型如下所示:

var schema = mongoose.Schema({
_id: {type: String, lowercase: true, trim: true, validate: validEmail }
, name: { first: String, last: String}
, salt: {type: String, required: true}
, hash: {type: String, required: true}
, edu: [{type: String, ref: 'Education'}] });

当我尝试使用来自教育模型的信息填充我的用户模型的 edu 部分时,它没有找到任何东西。

我的查询是这样的:

var query = User.findById(user)
    .populate('edu');

那么我如何正确地允许我的用户模型引用教育模型,以便我可以将两者的信息发送到视图?我可以填充到这样的字段吗?

任何建议都会很有帮助。我会搜索文档、谷歌并随机尝试一些有意义的东西。

谢谢。

【问题讨论】:

    标签: mongodb express mongoose


    【解决方案1】:

    您需要使用mongoose.Schema.Types.ObjectId 类型才能使populate 正常工作。

    var schema = mongoose.Schema({
    _id: {type: String, lowercase: true, trim: true, validate: validEmail }
    , name: {first: String, last: String}
    , salt: {type: String, required: true}
    , hash: {type: String, required: true}
    , edu: [{type: mongoose.Schema.Types.ObjectId, ref: 'Education'}] });
    

    旁注:

    • 你不需要定义_id,因为你会自动得到它,它不应该是一封电子邮件。为此使用单独的电子邮件字段。

    【讨论】:

    • 感谢您的帮助。我实际上只是想通了。我遇到问题的部分是将 edu doc 的引用保存到用户 doc,但我最终只使用了 .save() 函数,这最终做了我想做的事情。再次感谢您的帮助。
    猜你喜欢
    • 2021-06-28
    • 1970-01-01
    • 2016-03-27
    • 2019-08-02
    • 2016-03-17
    • 2017-10-22
    • 1970-01-01
    • 2011-06-01
    • 2014-05-07
    相关资源
    最近更新 更多