【发布时间】:2018-06-30 11:16:15
【问题描述】:
我尝试通过Mongoose populate.调用某个用户的相关日志列表谁可以帮助我完成响应?
这些是方案:
const logSchema = new Schema({
logTitle: String,
createdOn:
{ type: Date, 'default': Date.now },
postedBy: {
type: mongoose.Schema.Types.ObjectId, ref: 'User'}
});
const userSchema = new Schema({
firstName: {
type: String,
required: true
},
lastName: {
type: String,
required: true
}
logs: { type: mongoose.Schema.Types.ObjectId, ref: 'logs' }
});
mongoose.model('User', userSchema);
mongoose.model('logs', logSchema);
const userReadLogs = function (req, res) {
if (req.params && req.params.userid) {
User1
.findById(req.params.userid)
.populate('logs')
.exec((err, user) => {
if (!user) { }); // shortened
return;
} else if (err) {
return; // shortened
}
response = { //question
log: {
user: user.logs
}
};
res
.status(200)
.json(response);
});
} else { }); //
}
};
Postman 等中的响应是这样的:
{
"log": {5a57b2e6f633ce1148350e29: logTitle1,
6a57b2e6f633ce1148350e32: newsPaper44,
51757b2e6f633ce1148350e29: logTitle3
}
【问题讨论】:
-
您也可以发布一些示例文档吗?虽然这是一个糟糕的设计,但您在用户文档中保存了日志的引用 (_id),并在日志中保存了用户的引用 (_id),您应该只在 logSchema 中保存它并相应地引用它
LogsModel.find({ ...query }).populate('postedBy').then( ...callback )。 -
我认为在 Schema 中使用 Mongoose Populate (mongoosejs.com/docs/populate.html) 的示例做得很好,而不是“作家”和“故事”,我使用了“用户”和“日志” '。我认为它的工作方式相同?响应(示例文档)将是 JSON 格式的特定用户 ID 的 logTitles 列表。
-
你能告诉我们具体是什么问题吗,你的问题很模糊。
-
在我的函数 userReadLogs 中有一个'response = ..'。我需要添加什么代码来获得我的 .json 结果?提前致谢
-
你现在得到什么回应?