使用nodejs保存后如何从mongodb获取数据?

问题描述

我的Web应用程序类似于测验应用程序,用户应回答一个问题,服务器会将用户的结果存储在mongoDB数据库中。 我想要的是将文档保存在数据库中之后,我想获取此文档以将其发送给浏览器中的用户 保存笔记文档可以正常工作。 代码看起来像这样(假设用户的结果是10):

    const User_Result = require("../models/result_model")
router.post("/quiz/results",(req,res)=>{
       var result = new User_Result({
            _id: req.user._id,userResult: 10
      })
      result.save()


     //that should get data and send it but it send empty []
     User_Result.find({_id: req.user._id}).then(data=>{
            res.send(data)
        })
})

我认为在保存数据之前先查找数据的问题。

解决方法

您无需使用find,因为.save()将返回保存的文档,您可以使用它

异步/等待版本

router.post("/quiz/results",async (req,res)=>{
       let result = new User_Result({
            _id: req.user._id,userResult: 10
      })
       const ReturnedResult = await result.save();
       return res.status(201).json(ReturnedResult);
})

承诺版本

router.post("/quiz/results",(req,res) => {
    let result = new User_Result({
      _id: req.user._id,userResult: 10
    })
    result.save()
      .then(ReturnedResult =>return res.status(201).json(ReturnedResult))
      .catch(err => return res.status(500).json(err))

  })
,

result.save()返回一个promise,您应该等待其解决:

result.save().then(() => {
  User_Result.find({_id: req.user._id}).then(data=>{
    res.send(data)
  })
})
,
router.post("/quiz/results",res)=>{
       var result = new User_Result({
            _id: req.user._id,userResult: 10
      })
      const newResult = await result.save():
       return res.send(newResult).status(201);
})

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...