Node.js 如何在相关mongoose模式中插入数据?

Node.js 如何在相关mongoose模式中插入数据?,node.js,mongodb,mongoose-schema,Node.js,Mongodb,Mongoose Schema,我试图在nodejs中创建一个api端点,以便在mongodb中插入数据。我有两个相互关联的猫鼬模式,这就是为什么我将这两个模式关联如下: 职位架构: const mongoose = require('mongoose'); const Schema = mongoose.Schema; const PostSchema = mongoose.Schema({ title: { type: String, trim: true, required: true}, descri

我试图在nodejs中创建一个api端点,以便在mongodb中插入数据。我有两个相互关联的猫鼬模式,这就是为什么我将这两个模式关联如下:

职位架构:

const mongoose = require('mongoose');
const Schema = mongoose.Schema;

const PostSchema = mongoose.Schema({
    title: { type: String, trim: true, required: true},
    description: { type:String, required: true },
    created_at: { type: Date, default: Date.now },
    author: {type: Schema.ObjectId, ref: 'Author', required: true},
});

const Post = module.exports = mongoose.model('Post', PostSchema);
作者模式:

const mongoose = require('mongoose');

const AuthorSchema = mongoose.Schema({
    fullname: { type: String, trim: true, required: true},
    address: { type: String, required: true },
    phone: { type: Number, required: true },
    email: { type: String, required: true },
    created_at: { type: Date, default: Date.now }
});

const Author = module.exports = mongoose.model('Author', AuthorSchema);
现在我可以轻松地为作者插入数据模式

Authors.js:

router.post('/', (req, res, next) => {
  let newAuthor = new Authors({
    fullname: req.body.fullname,
    address: req.body.address,
    phone: req.body.phone,
    email: req.body.email
  });

  newAuthor.save((err, user) => {
    if(err) {
      res.json({
        success: false,
        msg: "Failed to add author"
      });
    } else {
      res.json({
        success: true,
        msg: "Author added successfully"
      });
    }
  }); 
});
但是对于帖子,我被困在这里了

posts.js:

router.post('/', (req, res) => {
    var newPost = new Posts({
        title: req.body.title,
        description: req.body.description,
        author: 
    })
})

主要问题是如何获取作者???

您可以在“作者”字段中设置作者id

// you can set authorId in req.body and use that
router.post('/', (req, res) => {
    var newPost = new Posts({
        title: req.body.title,
        description: req.body.description,
        author: req.body.authorId
    })
});
或者您可以在路由路径中设置作者id并使用
req.params.authorId

// for that route from ui call should be like 
// var userId = 4654654545454
// $http.post('/'+userId)....

router.post('/:authorId', (req, res) => {
    var newPost = new Posts({
        title: req.body.title,
        description: req.body.description,
        author: req.params.authorId
    })
});

您可以在“作者”字段中设置作者id

// you can set authorId in req.body and use that
router.post('/', (req, res) => {
    var newPost = new Posts({
        title: req.body.title,
        description: req.body.description,
        author: req.body.authorId
    })
});
或者您可以在路由路径中设置作者id并使用
req.params.authorId

// for that route from ui call should be like 
// var userId = 4654654545454
// $http.post('/'+userId)....

router.post('/:authorId', (req, res) => {
    var newPost = new Posts({
        title: req.body.title,
        description: req.body.description,
        author: req.params.authorId
    })
});

在允许用户创建帖子的页面上,您需要传递作者id以及其他帖子详细信息。然后,您可以简单地通过您选择的发送方式(即authorId)引用作者的id

如果您使用的序列化程序从表单中获取所有值并将其很好地打包,那么请插入一个隐藏的输入字段来存储作者的id,这样您也可以捕获该id。例如:

<input type="hidden" name="authorId" value={user._id} />

在允许用户创建帖子的页面上,您需要传递作者id以及其他帖子详细信息。然后,您可以简单地通过您选择的发送方式(即authorId)引用作者的id

如果您使用的序列化程序从表单中获取所有值并将其很好地打包,那么请插入一个隐藏的输入字段来存储作者的id,这样您也可以捕获该id。例如:

<input type="hidden" name="authorId" value={user._id} />

因此,您需要在POST请求中放置一个body参数(即
authorId
),然后通过
req.body.authorId
访问它。因此,您需要在POST请求中放置一个body参数(即
authorId
),然后通过
req.body.authorId
访问它