node.js - 续集 Nodejs-Express API 中的正文解析器错误
问题描述
我有 Nodejs-express-postgres API,它使用 sequalize ORM,它只是添加捐助者的详细信息并获取。添加工作正常,但在获取时出现以下错误
SyntaxError: Unexpected token in JSO:10)N at position 0 s\api-server-sequalize\node_modules\body-parser\l
at JSON.parse (<anonymous>)
at createStrictSyntaxError (E:\Noderver-sequalize\node_modules\body-parser\lib\readeProjects\red_lines\api-server-sequalize\node_modules\body-parser\lib\types\\red_lines\api-server-sequalize\node_modules\raw-json.js:158:10)
at parse (E:\NodeProjects\red_line\api-server-sequalize\node_modules\raw-body\indexs\api-server-sequalize\node_modules\body-parser\lib\types\json.js:83:15) rojects\red_lines\api-server-sequalize\node_modul
at E:\NodeProjects\red_lines\api-smingMessage.emit (node:events:388:22)erver-sequalize\node_modules\body-parsreams/readable:1305:12)er\lib\read.js:121:18 :internal/process/task_queues:80:21)
at invokeCallback (E:\NodeProjects\red_lines\api-server-sequalize\node_modules\raw-body\index.js:224:16)
at done (E:\NodeProjects\red_lines\api-server-sequalize\node_modules\raw-body\index.js:213:7)
at IncomingMessage.onEnd (E:\NodeProjects\red_lines\api-server-sequalize\node_modules\raw-body\index.js:273:7) at IncomingMessage.emit (node:events:388:22)
我的路线代码如下所示
const express = require("express");
const router = new express.Router();
const Donor = require("../models/donorModel");
router.get('/', (req, res) => {
res.status(201).send("Working");
});
router.get('/donor', async(req, res) => {
Donor.findAll().then((model)=>{
res.status(201).send(model)
}).catch((e)=>{
console.log('got some error')
res.status(401).send(e)
})
})
router.post("/donor", (req, res) => {
const { dname, dlocation,dphone , demail, ddob ,dbgroup } = req.body;
Donor.create({
dname: dname,
ddob: ddob,
demail: demail,
dlocation: dlocation,
dphone: dphone,
dbgroup: dbgroup,
}).then((model) => {
console.log("Saved");
res.status(201).send(model);
})
.catch((error) => {
res.status(201).send(error);
});
});
module.exports = router;
和 index.js 文件如下
const express = require("express");
const bodyParser = require("body-parser");
const app = express();
const db = require("./app/config/database");
require("dotenv").config();
app.use(bodyParser.urlencoded({ extended: false }));
app.use(bodyParser.json());
app.use(require("./app/routes/routes"));
//Test DB
db.authenticate()
.then(() => console.log("Database connected"))
.catch(e => console.log("Error:" + e))
// routes
app.listen(process.env.NODE_PORT || 3000, () =>
console.log(`server running on PORT ${process.env.NODE_PORT} !`)
);
希望有人有解决方案
解决方案
在您的路线中,将数据转换为 json,然后再将其作为响应发送。例如,在“/donor”路线中,您可以这样做:
res.status(201).json(model);
推荐阅读
- scala - Odersky 书中的偏函数解释
- vba - VBA填充非空白旁边的3个空白单元格
- python - 如何通过python cgi将表形式的值保存到sqlite db中?
- c# - 如何改善 Android Unity 中 Native 插件的性能问题?
- mongodb - MongoError:在副本集中找不到主节点
- python - Python post application/x-www-form-urlencoded 问题
- javascript - 多个 $http.get 操作并将信息保存在一个 $scope 变量中
- reporting-services - SSRS 子报表空格问题
- wordpress - 没有介绍文本的 Wordpress 全文
- visual-studio-code - VS Code 按下选项卡不会自动完成标签