访问json数据数组以存储在mongodb中,进行子记录

时间:2019-01-06 16:46:31

标签: node.js mongodb express

UserSchema

const UserSchema = new Schema({
name:{
    type:String,
    validate: {
        validator: (name) => name.length>2,
        message:'Name must be longer than 2 characters'
    },

},
postCount:{
    type:Number,
    default:0
},
posts:
    type:[PostSchema],

});

PostSchema

const PostSchema = new Schema({
title:{
    type:String,
    required:true
}

});

发布方法以将数据插入用户文档(mongodb)

app.post('/user',(req,res)=>{

console.log(req.body.posts);
var user = new User({
   name:req.body.name,
   posts: req.body.posts
});
user.save().then((doc)=>{
    res.status(200).send(doc);
},(e)=>{
    res.status(400).send(e);
});

});

使用此JSON数据创建POST请求

{
"name":"TIM",
"posts":[
    {"title":"abc", "name":"xxx"},
    {"title":"xyz", "name":"xxx"}]

}

在对上述JSON数据请求POST方法之后

{
"postCount": 0,
"_id": "5c32301725d0c965bd5fa82e",
"name": "TIM",
"posts": [
    {
        "_id": "5c32301725d0c965bd5fa830"
    },
    {
        "_id": "5c32301725d0c965bd5fa82f"
    }
],
"__v": 0

}

我已经创建了一个userschema和子文档化的帖子,现在我正尝试使用post方法插入邮递员的数据,但是标题没有更新,只有ID为单个的帖子生成。请帮忙。

我应该能够在帖子及其标题旁边添加用户名称。

1 个答案:

答案 0 :(得分:0)

尝试

帖子:[PostSchema]

参考 https://mongoosejs.com/docs/subdocs.html

此外,您的发布架构不包含名称字段。 您正在尝试通过帖子插入姓名。