我想將一些資料發送到我的 mongodb 資料庫,但在 router.post 我的 req.body 是空的,如果我使用我在用戶(req.body)instade 的 req.body 資料中放入我的發送函式的東西正確到我的 mongodb 資料庫
這是我使用的路由器,router.get 作業正常,它在 /api 頁面上正確回傳資料庫表
const router = require("express").Router();
const User = require("./model/models");
const parser = require("body-parser").json();
router.get("/", async (req, res) => {
const data = await User.find({});
res.json(data);
});
router.post("/",parser,async (req, res) => {
console.log('1')
console.log(req.body)
console.log('2')
parser.v
await User(req.body).save();
res.json({"msg": "ok"});
});
module.exports = router
這是我的 index.js 檔案代碼
const bodyParser = require('body-parser');
const express = require('express');
const app = express();
const parser = require("body-parser").json();
var path = require('path');
app.use(express.urlencoded(true));
app.use(express.json());
app.use(parser);
app.use('/',require("./routes/routes"))
app.use(express.static(__dirname '/public'))
app.use("/api", require('./data/api'))
app.listen(5000,function(){
console.log('server is alive')
})
這是我用來發送資料的功能
const btn1 = document.getElementById('btnEnter')
let Login = "123"
btn1.addEventListener('click' ,e=>{
send({newsTxT : "someTextHere",newsZag:"someZag",author:"SomeAuthor"})
})
const send = async(body) => {
let res = await fetch("/api", {
method: "post",
header: {
"Content-Type": "application/json",
"Accept": "application/json"
},
body: JSON.stringify(body)
});
let data = await res.json();
console.log(data)
}
uj5u.com熱心網友回復:
我看到的唯一奇怪的事情是您正在使用 ajson body-parser并且express.json()兩者在技術上都做同樣的事情,但body-parser已被棄用,因此它可能會導致錯誤。
此外,您不必在路由中再次匯入它,放置app.use(express.json())atindex.js將使其適用于所有端點/路由。
看看這個重構是如何進行的:
const router = require('express').Router()
const User = require('./model/models')
router.get('/', async (req, res) => {
const data = await User.find({})
res.json(data)
})
router.post('/', async (req, res) => {
console.log('1')
console.log(req.body)
console.log('2')
await User(req.body).save()
res.json({ 'msg': 'ok' })
})
module.exports = router
索引.js
const express = require('express')
const app = express()
var path = require('path')
app.use(express.urlencoded(true))
app.use(express.json())
app.use('/', require('./routes/routes'))
app.use(express.static(__dirname '/public'))
app.use('/api', require('./data/api'))
app.listen(5000, function () {
console.log('server is alive')
})
uj5u.com熱心網友回復:
以下作業正常:
const express = require("express")
const app = express()
const router = express.Router()
router.use(express.json())
app.use(router)
router.post('/api/user', function(req, res) {
// ...
}
我看到不同之處可能在于使用: app.use(router)
注意上面代碼中的陳述句:
router.use(express.json())
可以替換為(使用body-parser):
const bodyParser = require('body-parser')
router.use(bodyParser.json())
這適用于express4.17.1body-parser版、1.19.0NodeJS版和 12.18.3版
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/329198.html
標籤:javascript MongoDB 表达
上一篇:引數型別'WidgetFunction(BuildContext,Object?)'不能分配給引數型別'WidgetFunction(BuildContext,dynam
