我试图在这个模型中连接两件事。
router.post('/', (req, res) => {
let file= new File({
name: req.body.name,
year: req.body.year,
code: req.body.code
});
file.save().then(data => {
res.send(data);
}, err => {
res.send(err);
})});
所以我想做的是我想从用户那里获取姓名和年份的输入,一旦帖子请求通过,我想取名+' _' +最后六个字符MongoDB对象ID并使用结果更新模型和补丁代码。我怎样才能以有效的方式实现这一目标?任何帮助,将不胜感激。谢谢!
示例文档
{ "_id": { "$oid": "5aa420c2f92b4d77fc342e62" }, "name": "n", "year": "1992", "code": "", "__v": 0 }
字段的示例输出"代码"来自上述文件。
"代码":" n_342e62"
代码应该通过连接这两个属性自己在post请求之后更新。
答案 0 :(得分:1)
我不明白为什么在<{em> post
请求完成后只想才能这样做。但是你可以这样做:
router.post('/', (req, res) => {
let file= new File({
name: req.body.name,
year: req.body.year,
code: req.body.code
});
file.save().then(data => {
res.send(data);
//after the DATA has been sent, you can save the code
let id = data._id.toString();
data.code = data.name + "_" + id.slice(id.length - 6, id.length);
data.save();
}, err => {
res.send(err);
})});
(另请注明,您是否要将name
或year
作为代码。
答案 1 :(得分:0)
试试这个,在保存数据之前生成mongo Id。
const mongoose = require('mongoose');
router.post('/', async (req, res) => {
try {
const body = req.body;
let id = mongoose.Types.ObjectId();
body._id = id;
id = id.toString();
let file = new File();
data.code = `${data.name}_${id.substr(id.length - 6)}`;
file = Object.assign(file, body);
const data = await file.save();
res.json(data);
} catch (error) {
res.send('Something went wrong');
}
});