使用findOne然后使用save()替换文档,猫鼬

我想在架构中使用验证。因此,我不能使用findOneAndUpdate(?)。我必须使用保存。

问题是,如果我使用findOne,然后用要替换的对象替换该对象,它将不再具有保存功能。

mongoose.model('calculations').findOne({calcId:req.params['calcId']}, function(err, calculation){
    if(err) {errHandler.serverErr(err, res, 'Something went wrong when trying to update a calculation'); return;}
    calculation = calculationToReplace;
    calculation.save(function(err, calc){ //No longer exists
      if(err) {errHandler.serverErr(err, res, 'Something went wrong when trying to update a calculation'); return;}
      res.send(200);
    });
  });

这必须是一项常见的任务,但我找不到任何解决方案。我该如何解决?

虚拟主机

您的问题(到现在为止已经很老了)有一个简单的解决方案。在我的情况下,我必须拥有一个findOneAndUpdate upsert,该upsert返回有关所发生情况的更多信息。因此,我的解决方案是逐步完成使用for循环更新对象的过程。

(想一想为什么不能复制的原因是doc对象包含一堆“附加”,例如版本信息和保存功能以及其他“位”);所以这是我的解决方案。

exports.postData = function(req,res) {
    console.log("will create " + req.body.alias);
    console.log("It is level " + req.body.level);     //OK, all this have to be changed to members of the data! req.body contains all the data sent from the user at this time
    var query = { 'fulltext' : req.body.fulltext};
    console.log("Checkking if " + req.body.fulltext + " exists")
    Skill.findOne(query, function (err,doc){
        if(err) return res.status(500).send(err)
        if (!doc){
            console.log(req.body.fulltext + " not found!")
            var newdoc = new Skill(req.body);
            newdoc.save(function(err){
                if(err) return res.status(500).send(err)
                console.log(newdoc.fulltext + " created as " + newdoc._id);
                return res.status(200).send({_id: newdoc._id, alias: newdoc.alias})
            })

            return res.status(200).send('blal')
        } else {
            console.log(req.body.fulltext + " found!")
            for (var id in req.body ){
                doc[id]= req.body[id];
            }
            doc.save( function(err){
                if(err) return res.status(500).send(err)
                return res.status(200).send({_id: doc._id, alias: doc.alias})
            })


            //return res.status(200).send({_id: doc._id, alias: doc.alias})
        }

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

猫鼬findOneAndReplace替换文档为空

来自分类Dev

如何用猫鼬替换文档中的文本?

来自分类Dev

使用猫鼬同时访问文档

来自分类Dev

使用猫鼬查找所有文档

来自分类Dev

如何使用猫鼬的原始诺言(mpromise)查找文档然后保存

来自分类Dev

查找猫鼬文档,然后使用不同的层随机排序?

来自分类Dev

猫鼬:使用子文档过滤器查找文档

来自分类Dev

猫鼬如何通过findOne在文档中获取嵌套对象

来自分类Dev

如何在猫鼬中使用更多然后$ group

来自分类Dev

使用猫鼬,如何过滤然后分组?

来自分类Dev

在猫鼬中使用$ or返回部分文档

来自分类Dev

使用诺言和猫鼬对文档进行排序

来自分类Dev

使用猫鼬对子子文档进行CRUD

来自分类Dev

猫鼬使用$ lookup包含辅助文档中的字段

来自分类Dev

节点api使用猫鼬获取子文档

来自分类Dev

我想在猫鼬中使用upsert插入文档

来自分类Dev

猫鼬:如何使用.find()返回非Cursor文档

来自分类Dev

如何使用猫鼬删除仅在过期的子文档?

来自分类Dev

使用猫鼬对子子文档进行CRUD

来自分类Dev

使用猫鼬插入子文档时遇到问题

来自分类Dev

如何使用猫鼬从集合中选择随机文档

来自分类Dev

无法使用猫鼬更新多级嵌套文档

来自分类Dev

猫鼬如何替换模型的save()函数

来自分类Dev

.save()和使用update()之间的猫鼬区别

来自分类Dev

save()无法在猫鼬中使用静态函数

来自分类Dev

存储“ findOne”的值,并在猫鼬中使用“ find”插入返回的值

来自分类Dev

存储“ findOne”的值,并在猫鼬中使用“ find”插入返回的值

来自分类Dev

了解猫鼬findOne()。remove()

来自分类Dev

猫鼬findOne与“要么或”查询

Related 相关文章

热门标签

归档