node.js - 在node/expressjs中过滤json对象

标签 node.js express underscore.js

我正在寻找在 Express js 应用程序中使用下划线根据上一页的用户输入来过滤 json 文件。这是我到目前为止所做的:

var fs = require('fs');
var contents = fs.readFileSync("public/files/testFile.json");
var obj = JSON.parse(contents);
var gender = req.query.gender

var filtered = _.where(obj.elements, {gender: true}); // elements is the array I want to filter

我尝试过滤的 json 如下:

{
   "elements": [
   {
       "id": 0,
       "man": true,
       "url": "https://pbs.twimg.com/media/CfRi_u8aaW8AfQvI7v.jpg"
   },
   {
       "id": 1,
       "Woman": true,
       "url": "https://pbs.twimg.com/media/CfZ-8ikafWsAAngQGP.jpg"
   }
 ]
}

请注意,当我执行相同的操作,将变量性别更改为“man”时,它可以正常工作。看起来像这样使用变量进行搜索是行不通的。我有两个问题:

  1. 我该怎么做才能让它发挥作用?
  2. 有更好的方法来面对这个问题吗?

最佳答案

为什么不尝试以下方法:

var _ = require('underscore');
var elem = {
    "elements": [
        {
            "id" : 0,
            "man": true,
            "url": "https://pbs.twimg.com/media/CfRi_u8W8AQvI7v.jpg"
        },
        {
            "id"   : 1,
            "woman": true,
            "url"  : "https://pbs.twimg.com/media/CfZ-8ikWsAAnQGP.jpg"
        }
    ]
};
var gender = 'man';
var filtered = _.filter(elem.elements, function(element){
    return _.has(element, gender) && element[gender] === true;
});
console.log(filtered);

我在这里对性别的值进行了硬编码。您可以从应用程序中的查询中读取该信息。我认为该片段几乎是不言自明的。

关于node.js - 在node/expressjs中过滤json对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36546283/

相关文章:

react-native - 如何执行 groupBy 并添加在 underscore.js 中分组的值的总和

javascript - 使用 underscore.js 从嵌套对象(父子)中获取路径字段值

angularjs - 每次新建项目都要安装express、node等吗?

javascript - 将 HTTP 响应写入页面显示为纯文本

node.js - 使用 Passport js 进行身份验证时,用户为空

node.js - 自动向 Express 部分 View 提供数据

javascript - 如何在 NodeJS 中像 .htaccess 文件一样执行重定向?

javascript - 如何在 mongodb 的嵌套子数组中使用 $filter ?

node.js - ES6 - 并行向多个用户帐户发出多个请求

javascript - 是否可以使用下划线按多个值过滤数组值?