Node.js MongoDB-连接模型中的两个属性并使用结果更新模型

Node.js MongoDB-连接模型中的两个属性并使用结果更新模型,node.js,mongodb,express,mongoose,mongodb-query,Node.js,Mongodb,Express,Mongoose,Mongodb Query,我试图在这个模型中连接两件事 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); })}); 所以我想做的是,我

我试图在这个模型中连接两件事

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);
})});
所以我想做的是,我想从用户那里获取name和year的输入,一旦post请求通过,我想获取name+''''+MongoDB对象ID的最后六个字符,并用结果更新模型和补丁代码。我如何才能有效地实现这一点?任何帮助都将不胜感激。谢谢

样本文件

{ "_id": { "$oid": "5aa420c2f92b4d77fc342e62" }, "name": "n", "year": "1992", "code": "", "__v": 0 }
上述文档中“代码”字段的示例输出

“代码”:“n_342e62”


在post请求之后,代码应该通过连接这两个属性来自动更新。

我不明白为什么您只想在
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);
})});

(另外,请澄清您是要为代码选择
名称
还是
年份

尝试此操作,在保存数据之前生成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');
  }
});

显示一个示例文档{“\u id”:{“$oid”:“5aa420c2f92b4d77fc342e62”},“名称”:“n”,“年份”:“1992”,“代码”:“{u v”:0}以及您要查找的示例输入/输出是什么?{“\u id”:“{$oid”:“5aa420c2f92b4d77fc342e62”},“名称”:“n”,“年份”:“1992”,“代码”:“n\u 342e62”,“0}代码应该在post请求后通过连接这两个属性自行更新。出于好奇,创建此代码有什么用?此外,没有“触发器”功能可以在插入时自动更新此字段。