Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 如何在NodeJs响应中仅发送列表的特定属性_Node.js_Json_Express - Fatal编程技术网

Node.js 如何在NodeJs响应中仅发送列表的特定属性

Node.js 如何在NodeJs响应中仅发送列表的特定属性,node.js,json,express,Node.js,Json,Express,我以前很抱歉,也许这是一个非常基本的问题,但我已经被绊倒了一段时间 我已经使用ExpressJs和Sequelize构建了一个API。我已成功获取数据,但在尝试将所有数据显示为列表时遇到问题。 以下是我设置响应的代码: exports.ok = function (values, res) { var data = { 'status': 200, 'values': values }; res.json(data); res.end(); } 答复如下: 上面的数据显示所有

我以前很抱歉,也许这是一个非常基本的问题,但我已经被绊倒了一段时间

我已经使用ExpressJs和Sequelize构建了一个API。我已成功获取数据,但在尝试将所有数据显示为列表时遇到问题。 以下是我设置响应的代码:

exports.ok = function (values, res) {
var data = {
    'status': 200,
    'values': values
};
res.json(data);
res.end();
}
答复如下:

上面的数据显示所有属性,如何仅显示名称和id。
谢谢。

正如@Sindis所建议的,您只需在响应上应用
map
,然后选择所需字段

  exports.ok = function (values, res) {
      var data = {
        'status': 200,
        'values': values.map(val => return { id: val.id, name: val.name })
      };
      res.json(data);
      res.end();
    }

我希望它会有所帮助。

如果您使用sequelize来获得结果,则必须在查询表时设置属性。使用like

const values = await db.Users.findAll({
    attributes: ['id', 'name'],
    order: [
        ['id', 'ASC']
    ]
});
解决

它与此相关:

exports.ok = function (values, res) {
var data = {
    'status': 200,
    'values': values.map(function (value) {
        return {
            id: value.id,
            name: value.name,
            email: value.email
        }
    })
};
res.type('json');
res.send(data);
};

简单方法:
values:values.map(val=>return{id:val.id,name:val.name})
@Sindis它给出了一个错误syntaxvalues:values.map(val=>({id:val.id,name:val.name}));也不起作用:(除非你有非常旧版本的Node.js(小于6),它应该按照你在回答中描述的方式工作。它已经解决了,我将你的修改为
'values':values.map(函数(值){return{id:value.id,name:value.name})
谢谢somuch是的,我正在使用sequelize,所以你的意思是我应该在controller中这样做?是的。你可以在查询时这样做是的,但我可以这样做,因为我根据用户角色显示特定数据。对吗?你可以根据用户Roleeyes自定义对象,还有其他选项。谢谢somuch:D