如何在我的JSON响应API中添加总计(int)字段

时间:2019-10-17 10:32:51

标签: javascript json express

我正在使用Express.js开发API。在getAll函数中,我想返回记录数组,但也要返回记录总数。这是我要返回的响应:

const users = await User.getAll()
const total = users.length
const response = users
return res.json(response).status(200)

该格式为[{user1},{user2},{user3}]。如何以这种格式{ data: {Record[]}, total: {int} }附加总数?

我尝试过此操作,但是它在每个用户的序号中都添加了一个密钥。

const users = await User.getAll()
const total = users.length
const response = {
  ...users,
  total
}
return res.json(response).status(200)

4 个答案:

答案 0 :(得分:0)

您正在使用行在对象中展开数组:

segment()

这样做,您试图将数组的所有元素添加到对象中,这是不可能的。但您可以使用自己建议的格式:

public function index()
{
    $prev_uri_segments = $this->prev_segments(url()->previous());
}

 /**
 * Get all of the segments for the previous uri.
 *
 * @return array
 */
public function prev_segments($uri)
{
    $segments = explode('/', str_replace(''.url('').'', '', $uri));

    return array_values(array_filter($segments, function ($value) {
        return $value !== '';
    }));
}

答案 1 :(得分:0)

const users = await User.getAll();
return res.json({ data: users, total: users.length }).status(200);

答案 2 :(得分:0)

...users在这里引起痛苦。使用散布运算符时,它允许迭代(此处为users对象)的扩展。下面应该按照您期望的方式工作。

const users = await User.getAll()
const total = users.length
const response = {
  users,
  total
}
return res.json(response).status(200)

答案 3 :(得分:0)

此问题归因于传播运算符(...)。用户的数组在响应对象中展开。您可以尝试以下代码:

const users = await User.getAll()
const total = users.length
const response = {
  data: users,
  total,
}
return res.status(200).json(response)