Express POST无法识别字符串



好的,我正在尝试构建我的第一个REST API,并设置模式,并尝试使用VS Code中的其余客户端来测试它。有些如何所有的字符串输入在我的json体不被识别,而不是他们是空的。我不确定哪里出了问题,有什么建议我应该仔细检查哪里可能出错吗?

模型/wordDetailSchema.js

const mongoose = require("mongoose");
const WordDetailSchema = new mongoose.Schema({
name: {
type: String,
// required: true,
},
partOfSpeech: {
type: String,
// required: true,
},
definition: {
type: String,
// required: [true, "Word meaning is required"],
},
synonyms: {
type: [String],
},
examples: {
type: [String],
},
});
module.exports = mongoose.model("WordDetail", WordDetailSchema);

路线/wordDetails.js

const expree = require("express");
const router = expree.Router();
const WordDetail = require("../models/WordDetailSchema");
//Creating one
router.post("/", async (req, res) => {
const wordDetail = new WordDetail({
name: req.body.name,
partOfSpeech: req.body.partOfSpeech,
definition: req.body.definition,
synonyms: req.body.synonym,
examples: req.body.example,
});
try {
const newWordDetail = await wordDetail.save();
res.status(201).json(newWordDetail);
} catch (err) {
res.status(400).json({ message: err.message });
}
});

module.exports = router;

脚本,我曾经使用REST客户端发布:route.rest

POST http://localhost:3001/wordDetails
Content-Type: application/json
{
"name" : "can",
"partOfSpeech" : "verb",
"definition" : "be able to.",
"synonyms" : [],
"examples" : ["they can run fast"],
}

Server.js:

require("dotenv").config();
const express = require("express");
const app = express();
var bodyParser = require("body-parser");
const mongoose = require("mongoose");
mongoose.connect(process.env.DATABASE_URL, { useNewUrlParser: true });
const db = mongoose.connection;
db.on("error", (error) => console.error(error));
db.once("open", () => console.log("Connected to database"));
app.use(express.json());
const wordsRouter = require("./routes/words");
const wordDetailRouter = require("./routes/wordDetails");
app.use(bodyParser.json());
app.use("/words", wordsRouter);
app.use("/wordDetails", wordDetailRouter);
app.listen(3001, () => console.log("Server Started"));

结果是:

HTTP/1.1 201 Created
X-Powered-By: Express
Content-Type: application/json; charset=utf-8
Content-Length: 70
ETag: W/"46-Hq/hIWt5lGAlv2gNJQxk5mUEYHg"
Date: Fri, 10 Sep 2021 04:41:14 GMT
Connection: close
{
"synonyms": [],
"examples": [],
"_id": "613ae1eac4b78ca3080dbed8",
"__v": 0
}

尝试使用

app.use(express.json()); //Used to parse JSON bodies
app.use(express.urlencoded({ extended: true })); //Parse URL-encoded bodies

,因为您不再需要body解析器模块ifexpress的版本是4.16+

最新更新