node.js - 如何从我的 POST 请求负载中提取特定信息并保存到 txt 文件中?
问题描述
嗨,我想知道我可以用来仅将其“结果”部分提取到 txt 文件中的任何方法。有效负载是从设备到我自己的服务器的 POST 请求中提取的。例子:
{
"cid": "042071004033",
"time": 1593673402,
"front_vaule": 94,
"scale_out_x": 1,
"scale_out_y": 0.5,
"sharpen_ness": 89,
"track_id": 155,
"type": 1,
"upload_face_size": 120,
"upload_id": 8,
"result": {
"person_id": 123456,
"person_name": "",
"age": 0,
"sex": "male",
"temperature": 37,
"confidence": 0,
"person_type": 0,
"facemask": 1
}
我想要保存到 txt 文件的唯一 JSON 有效负载是
"person_id": "",
"person_name": "",
"age": 0,
"sex": "male",
"temperature": 37,
"confidence": 0,
"person_type": 0,
"facemask": 1
以下是我当前的代码,请告诉我在哪里插入您建议的代码,谢谢。
const express = require('express');
const app = express();
const bodyParser = require('body-parser');
const router = express.Router();
var fs = require('fs');
app.use(bodyParser.json({ limit: '10mb', extended: true, parameterLimit: 1000000 }));
app.use(bodyParser.urlencoded({ limit: '10mb', extended: true, parameterLimit: 1000000 }));
app.post('/face', (req, res) => {
console.log('POST');
//console.log(req.body);
data = req.body;
//console.log(data);
res.status(200).json('200OK');
//string data from JSON to txt and overwrite existing txt data
var data = JSON.stringify(data.result, null, 2);
//console.log(data.result.person_id);
fs.writeFileSync(`${data.result.person_id}-database.txt`, data, function (err) {
if (err) {
console.log('Error logging data to txt file!');
} else {
console.log('Logged into text file successfully!');
}
})
});
const server = app.listen(9000, () => {
console.log('server listening on port', server.address().port);
});
错误日志:
POST
TypeError: Cannot read property 'person_id' of undefined
at C:\Users\gohyu\Desktop\nodetestapi\server.js:20:37
at Layer.handle [as handle_request] (C:\Users\gohyu\Desktop\nodetestapi\node_modules\express\lib\router\layer.js:95:5)
at next (C:\Users\gohyu\Desktop\nodetestapi\node_modules\express\lib\router\route.js:137:13)
at Route.dispatch (C:\Users\gohyu\Desktop\nodetestapi\node_modules\express\lib\router\route.js:112:3)
at Layer.handle [as handle_request] (C:\Users\gohyu\Desktop\nodetestapi\node_modules\express\lib\router\layer.js:95:5)
at C:\Users\gohyu\Desktop\nodetestapi\node_modules\express\lib\router\index.js:281:22
at Function.process_params (C:\Users\gohyu\Desktop\nodetestapi\node_modules\express\lib\router\index.js:335:12)
at next (C:\Users\gohyu\Desktop\nodetestapi\node_modules\express\lib\router\index.js:275:10)
at urlencodedParser (C:\Users\gohyu\Desktop\nodetestapi\node_modules\body-parser\lib\types\urlencoded.js:82:7)
at Layer.handle [as handle_request] (C:\Users\gohyu\Desktop\nodetestapi\node_modules\express\lib\router\layer.js:95:5)
解决方案
应该足够了JSON.stringify(data.result)
。虽然这是一个简单的对象。
推荐阅读
- django - 如何从 html 更新 django 数据库?
- node.js - Firebase Cloud Function,触发 onCreate 事件后如何访问父数据?
- android - 权限拒绝:无法附加文件,文件需要导出提供程序,或 grantUriPermission(),API 29
- sql - 在 postgresql 上查询 JSON 数组时我应该使用横向吗?
- angular - 如何以角度设置div的背景颜色?
- java - @ControllerAdvice 与 ExceptionHandler 类一起工作需要任何额外的设置吗?
- mongodb - 从 Databricks 写入 Azure cosmos DB 的问题
- angular - 角进口成本
- r - 使用另一个数据帧从一个数据帧中逐组采样 n 行
- html - input[type=date]: 处理跨浏览器宽度和空白