简体   繁体   English

Mongoose 等待 node.js req.query 数据

[英]Mongoose await for node.js req.query data

I am working on small backend project.我正在从事小型后端项目。 I send GET requests via postman to express.js app.我通过 postman 向express.js应用程序发送 GET 请求。 Express send request to mongoose and return data.mongoose快速发送请求并返回数据。

I am trying to make it shorter by writing req.query.data instead of object name.我试图通过编写 req.query.data 而不是 object 名称来缩短它。 req.query.data is object name which is imported to node file but mongoose "find" function read it as "req.query.data" instead of acuall data. req.query.data是导入到节点文件的 object 名称,但mongoose “find” function 将其读取为“req.query.data”而不是 acu

I tried putting req data in () but it still didn't want to read value.我尝试将 req 数据放入 () 但它仍然不想读取值。 I have no idea how to make it working我不知道如何使它工作

Code:代码:

 const Daily = require("./DailyStats/DailySchema") module.exports.GetData = async (req, res) => { await Daily.find({"Date.month": 3}, function (err, data) { if(err){ console.error(err) } res.send(data) }) }

What I want is我想要的是

    await (req.query.data).find({"Date.month": 3}, function (err, data) {
        if(err){
            console.error(err)
        }
        res.send(data)
    })

While using second code I got error "Cannot use method find on req.query.data"使用第二个代码时出现错误“无法在 req.query.data 上使用方法查找”

find should be called on a mongoose.Model find 应该在mongoose.Model上调用

You may use mongoose.model(req.query.data) assuming req.query.data is your model name您可以使用mongoose.model(req.query.data)假设 req.query.data 是您的 model 名称

That said you should那就是说你应该

  • check that provided data is only a valid model name检查提供的数据是否只是有效的 model 名称
  • name data better, like modelName更好地命名数据,例如 modelName
const mongoose = require('mongoose')
mongoose.connect('mongodb://localhost:27017/dummy')
const NameModel = mongoose.model('Name', { name:String }, 'names')

;(async()=>{
  try {
  console.log(mongoose.model('Name') === NameModel) // true
  } finally {
    mongoose.disconnect()
  }
})()

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM