0

我正在使用 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');

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

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

谢谢你。

4

1 回答 1

0

您需要使用该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,因为你会自动得到它,它不应该是一封电子邮件。为此使用单独的电子邮件字段。
于 2013-10-15T21:58:26.110 回答