我能够在POST请求中使用req.body将数据存储在mongoDB数据库中,但是我无法在GET请求中使用req.body检索该数据。如果传递字符串但不能传递req.body,则可以检索数据。 我已经看到有很多关于此问题的文章,其中body解析器似乎可以解决该问题,但是即使我要使用body解析器,我仍在检索未定义的内容。
谢谢。
const express = require('express');
const app = express();
const mongoose = require('mongoose');
const path = require('path');
const bodyParser = require('body-parser');
const PORT = process.env.PORT || 2000;
// app.use(express.urlencoded({extended: true}));
app.use(bodyParser.urlencoded({ extended: false }));
// app.use(express.json());
app.use(bodyParser.json());
app.use(express.static('public'));
const database = mongoose.connect('mongodb://localhost/users')
.then(() => console.log('connected to mongoDB!!'))
.catch((err) => console.error('unable to connect', err));
const userSchema = {
name: String,
email: String
}
const User = mongoose.model('User', userSchema);
app.post('/api/users',(req,res) => {
const user = new User({
name: req.body.name,
email: req.body.email
});
const create = user.save();
res.send('created a user account');
});
app.get('/api/users', async (req,res) => {
const find = await User
.find({ name: req.body.name});
console.log(find);
res.send(`your data is ${req.body.name}`);
})
app.listen(PORT, () => console.log(`listening on port ${PORT}`));
答案 0 :(得分:1)
GET Resquest没有实体。相反,您需要使用查询参数。
您可以执行以下操作:
app.get('/api/users', async (req,res) => {
const find = await User
.find({ name: req.query.name});
console.log(find);
res.send(`your data is ${req.query.name}`);
})
答案 1 :(得分:1)
为补充Leandro Lima的回答, 路线参数:
.
├── electron
│ ├── electron.js
│ ├── electron.ts
│ ├── ipcEvents.js
│ ├── ipcEvents.ts
│ ├── messageSender.ts
│ ├── socketEvents.js
│ ├── socketEvents.ts
│ ├── Utils.ts
│ ├── windowEvents.js
│ └── windowEvents.ts
├── node_modules
├── package.json
├── package-lock.json
├── public
│ ├── favicon.ico
│ ├── index.html
│ └── manifest.json
├── src
│ ├── App.tsx
│ ├── index.css
│ ├── index.tsx
│ ├── react-app-env.d.ts
│ └── serviceWorker.ts
├── tsconfig.json
app.get('/api/users/:name', async (req,res) => {
const find = await User
.find({ name: req.params.name});
console.log(find);
res.send(`your data is ${req.params.name}`);
})
部分组成.../:name
(例如,req.params.name
就是.../:id
)。
对于查询参数:req.params.id
然后/api/users/Dave?sex=male&developer=yes
有req.query
,因此可以根据需要使用{sex: 'male', developer: 'yes'}
和req.query.sex
。
也请查看以下问题:Node.js: Difference between req.query[] and req.params