我正在使用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)
答案 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)