如何在mogodb中动态传递fieldname

时间:2019-01-29 17:58:31

标签: node.js mongodb

我想在查询集合时在Mondgodb中动态传递字段名称。例如

emp.ply = function(res,res) {
  Employee.find({area: 'Plymouth'}).exec(function(err,PLY) {
    res.render("../index", {resultset: PLY})

在这里,我正在查询字段名称区域,这是硬代码。而不是我想动态传递fieldname。我们如何在nodeJS中实现它

2 个答案:

答案 0 :(得分:1)

因此,从概念上讲,您只需要在将查询对象发送到.find()函数之前先构建查询对象。也许是这样的:

const query = {}
const fieldname = 'area'
const fieldvalue = 'Plymouth'
query[fieldname] = fieldvalue
Employee.find(query).exec((err, ply) => {
  // do whatever
});

根据您的工作,您可以从概念上从req.body或req.query中提取字段名和fielvalue。

答案 1 :(得分:1)

如果您的代码支持ES6或(除IE以外的任何最新浏览器),我们可以这样做:

emp.ply = function(res,res) {
  let searchField = 'area'; // this can be anything dynamically
  Employee.find({[searchField]: 'Plymouth'}).exec(function(err,PLY) {
    res.render("../index", {resultset: PLY})
    })
}

您可以参考有关Computed property names的MDN文档