【发布时间】:2019-06-25 02:10:35
【问题描述】:
我正在尝试在两个猫鼬系列之间建立联系。这样用户的信息存储在一个名为 user 的集合中,而他的内容存储在另一个集合中。 到目前为止,我从here 复制了一些代码并对其进行了编辑;
然后使用 Postman,我创建了一个名为“example”的用户名; 然后我创建了一个包含随机内容的帖子,作为作者,我将其设置为“示例”,但似乎它不起作用,当我得到“/测试”时它会记录:
填充用户{帖子:[],_id:5c530cd4ede117109cf1a5e9,
用户名:'示例',__v:0 }
如您所见,帖子是空的,我应该更改什么来解决这个问题?
const UserSchema = new mongoose.Schema({
username: String,
posts: [{
type: mongoose.Schema.Types.ObjectId,
ref: 'Post'
}]
})
const PostSchema = new mongoose.Schema({
content: String,
author: {
type: mongoose.Schema.Types.ObjectId,
ref: 'User'
}
})
function getUserWithPosts(username){
return User.findOne({ username: username })
.populate('posts').exec((err, posts) => {
console.log("Populated User " + posts);
})
}
const Post = mongoose.model('Post', PostSchema, 'posts');
const User = mongoose.model('User', UserSchema, 'users');
app.post('/testUser', (req, res) => {
var username = req.body.username;
var clientModel = new User({
username: username,
});
clientModel.save(function (error) {
if (error) {
console.log(error);
}
res.send({
success: true,
username: username,
message: 'account saved successfully!'
});
});
});
app.post('/testPost', (req, res) => {
var content = req.body.content;
var author = req.body.author;
var clientModel = new Post({
content: content,
author: author
});
clientModel.save(function (error) {
if (error) {
console.log(error);
}
res.send({
success: true,
content: content,
author: author,
message: 'account saved successfully!'
});
});
});
app.get('/test', (req, res) => {
res.send({
posts: getUserWithPosts("example")
})
});
【问题讨论】:
-
您返回的是来自
getUserWithPosts的查询,而不是结果,请尝试将console.log("Populated User " + posts);换成return posts; -
@mast3rd3mon 我仍然得到一个空对象
-
你用
.populate位做什么?
标签: node.js mongodb express mongoose