node.js - 如何将数据插入到相关的 Mongoose 模式中?

标签 node.js mongodb mongoose-schema

我正在尝试在nodejs中创建一个api端点以在mongodb中插入数据。我有两个相互关联的 Mongoose 模式,这就是为什么我将这两个模式关联起来,如下所示:

帖子架构:

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);

现在我可以轻松地插入作者架构的数据

作者.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
    })
});

关于node.js - 如何将数据插入到相关的 Mongoose 模式中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45658506/

相关文章:

node.js - Karma 出现 ReferenceError : Can't find variable: module on the karma config file itself 错误

javascript - 基于多个属性过滤对象数组

javascript - 扩展错误给出错误的堆栈跟踪信息

MongoDB循环更新查询

mongodb - 在 MongoDB 中删除大集合的最佳方法

node.js - Mongoose 条件必填字段验证

javascript - NodeJS : util. 检查内部有函数的对象

c# - MongoDB C# 驱动程序 - 对 _id 执行 "IN"查询的最快方法

javascript - 在 Mongoose 中创建多对多关系,填充不是函数

node.js - Mongoose 仍然通过选择 : false 发送密码字段