Node.js 如何在相关mongoose模式中插入数据?
我试图在nodejs中创建一个api端点,以便在mongodb中插入数据。我有两个相互关联的猫鼬模式,这就是为什么我将这两个模式关联如下: 职位架构: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
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
访问它