Javascript express.js返回的不必要数据
我刚刚使用Express.js制作了简单的RESTAPI,但是Express返回了一个不必要的数据 以下是响应数据:Javascript express.js返回的不必要数据,javascript,node.js,express,Javascript,Node.js,Express,我刚刚使用Express.js制作了简单的RESTAPI,但是Express返回了一个不必要的数据 以下是响应数据: { "code": 200, "status": "success", "message": "Success", "device_code": "2F1E6DB930", "data": [ { "_id": "5d84801cd3906f1e5cbec0c4" },
{
"code": 200,
"status": "success",
"message": "Success",
"device_code": "2F1E6DB930",
"data": [
{
"_id": "5d84801cd3906f1e5cbec0c4"
},
{
"_id": "5d848032d3906f1e5cbec0c6"
},
{
"_id": "5d8480bbd3906f1e5cbec0ca"
}
]
}
不需要数据对象,因为我没有在代码中返回它
exports.register = async (req, res) => {
if (utils.checkBody(req.body, utils.authBody)) {
let User = services.db.collection('users')
let deviceCode = Math.random().toString(16).substr(2, 10).toUpperCase()
await User.insertOne({
username: req.body.username,
password: md5(req.body.password + process.env.SECRET_KEY),
kode_device: deviceCode
})
response = Object.assign(utils.requestResponse.success, { device_code: deviceCode })
} else {
response = utils.requestResponse.incomplete_body
}
res.status(response.code).json(response)
}
// request response success
const requestResponse = {
success: {
code: 200,
status: 'success',
message: 'Success'
}
}
我返回的唯一数据对象位于另一个端点中,比如说“showdata”,下面是代码
exports.show = async (req, res) => {
if (req.params.device_code) {
let General = services.db.collection(req.params.device_code)
let query = undefined
if (req.query.last_id === undefined || req.query.last_id === '') {
query = {}
} else {
query = { _id: { '$gt': ObjectId(req.query.last_id) } }
}
let data = await General.find(query).limit(10).toArray()
response = Object.assign(utils.requestResponse.success, { data: data })
} else {
response = utils.requestResponse.incomplete_body
}
res.status(response.code).json(response)
}
我编写了一个脚本来对应用服务器代码进行集群,并通过nodemon运行
有什么解决办法吗?谢谢。在发送utils.requestResponse.success之前,您是否尝试查看其内容 提示:有一种调试方法。在请求启动时放置一个断点,并逐步执行,直到您看到响应对象中有一个数据属性,并分析这部分代码中涉及的所有变量。您将注意到问题出在utils.requestResponse.success对象上 通过这种方式,您将注意到Object.assign将修改作为第一个参数传递的对象,因此当调用show端点时,您将注意到utils.requestResponse.success被修改,并且向其添加了一个数据属性。与执行以下操作相同:
utils.requestResponse.success.data = data;
必须传递空对象{}作为第一个参数,传递utils.requestResponse.success作为第二个参数,传递{data:data}作为第三个参数。这样修改的对象就是刚刚创建的第一个空对象。Sooo,我的答案怎么样?我们在这里为你浪费空闲时间。至少给出一点反馈…:-
utils.requestResponse.success.data = data;