【问题标题】:Set a custom field as argument for .find() in mongoose在 mongoose 中将自定义字段设置为 .find() 的参数
【发布时间】:2019-01-30 16:05:37
【问题描述】:

我正在对我的 api 进行 HTTP 调用以从 mongodb 检索文档,并且在 url 中我有两个参数:campokeyphrase。 我想查找所有将参数 campo 设置为我的 keyphrase 的文档。 例如:我的 mongo 中有一些这样的文档:

classe: "4AT"
cognome: "XYZ"
email: "xyz.zyx@gmail.com"
idreg: "IUDQFEXFFR4DW133"
nome: "Francesco"
turni: ["g2t1", "g1t2", "g3t2"]
__v: 0
_id: "5c508d0b4810fc0ece8df2a9"

我将 GET 调用到“localhost:3000/nome/Francesco”,我想在“nome”字段中选择所有值为“Francesco”的文档。 但问题是 .find() 方法接受如下参数:

.find({nome: keyphrase})

而不是我想要的动态标题。有机会吗?

PS:我的获取请求的 Express 代码,如果有帮助:

app.get("/api/ragazzi/:campo/:keyphrase",(req, res, next) => {
  let campo = req.params.campo.toLowerCase();
  let keyphrase = req.params.keyphrase;
  Ragazzo.find({campo : keyphrase})
    .then(documents =>{
      res.status(200).json({
        codice: "ok",
        risultato: documents
      });
    })
    .catch((err)=>{console.log(err);});
});

【问题讨论】:

  • 你用什么来指定api端点?快递?
  • 是快递。 get 方法类似于: app.get("/api/ragazzi/:campo/:keyphrase",(req, res, next) => { let campo = req.params.campo.toLowerCase(); let keyphrase = req.params.keyphrase; Ragazzo.find({campo : keyphrase}) .then(documents =>{ res.status(200).json({ codice: "ok", risultato: documents }); }) .catch( (err)=>{console.log(err);});});希望你能看到一些东西:)

标签: javascript mongodb api dynamic field


【解决方案1】:

试试

.find({ [campo] : keyphrase})

【讨论】:

    【解决方案2】:

    如果要根据 campo 和 keyphrase 的值进行查询,请预先创建一个对象并将其用作查询

    app.get("/api/ragazzi/:campo/:keyphrase",(req, res, next) => {
      let campo = req.params.campo.toLowerCase();
      let keyphrase = req.params.keyphrase;
      let query = {};
      query[campo] = keyphrase
      Ragazzo.find(query)
        .then(documents =>{
          res.status(200).json({
            codice: "ok",
            risultato: documents
          });
        })
        .catch((err)=>{console.log(err);});
    });
    

    【讨论】:

    • 另一个答案更短。无论如何谢谢:3
    猜你喜欢
    • 2013-09-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多