node.js - POST 请求不起作用 - 使用 Mongoose 的 MongDB 和 Express JS
问题描述
我开始开发一个 MERN 应用程序,并正在尝试编写一个宁静的 api。代码工作正常。但是 POST 请求不起作用。
电影模型.js
const mongoose = require('mongoose')
const Schema = mongoose.Schema
const Movie = new Schema(
{
name: { type: String, required: true },
time: { type: [String], required: true },
rating: { type: Number, required: true },
},
{ timestamps: true },
)
module.exports = mongoose.model('users', Movie)
电影控制.js
const Movie = require('../models/moviemodel')
createMovie = (req, res) => {
const body = req.body
if (!body) {
return res.status(400).json({
success: false,
error: 'You must provide a movie',
})
}
const movie = new Movie(body)
if (!movie) {
return res.status(400).json({ success: false, error: err })
}
movie
.save()
.then(() => {
return res.status(201).json({
success: true,
id: movie._id,
message: 'Movie created!',
})
})
.catch(error => {
return res.status(400).json({
error,
message: 'Movie not created!',
})
})
}
index.js
const express = require('express')
const bodyParser = require('body-parser')
const cors = require('cors')
var MongoClient = require('mongodb').MongoClient;
const movieRouter = require('./routes/movierouter')
const app = express()
const apiPort = 3000
app.use(bodyParser.urlencoded({ extended: true }))
app.use(cors())
app.use(bodyParser.json())
MongoClient.connect('mongodb://127.0.0.1:27017/cinema', { useNewUrlParser:
true }, function(err, client) {
const db = client.db('cinema')
if(err) throw err;
console.log('Successfully connected')
})
app.get('/', (req, res) => {
res.send('Hello World!')
})
app.use('/api', movieRouter)
app.listen(apiPort, () => console.log(`Server running on port
${apiPort}`))
电影路由器.js
const express = require('express')
const MovieCtrl = require('../controllers/moviectrl')
const router = express.Router()
router.post('/movie', MovieCtrl.createMovie)
router.put('/movie/:id', MovieCtrl.updateMovie)
router.delete('/movie/:id', MovieCtrl.deleteMovie)
router.get('/movie/:id', MovieCtrl.getMovieById)
router.get('/movies', MovieCtrl.getMovies)
module.exports = router
当我使用链接 localhost:3000/api/movie 发送 POST 请求并通过 Postman 发送 JSON 数据时。没有回应。
解决方案
我已经测试了您的应用程序,发现您的数据库挂起...
用这个替换你的数据库连接:
const url = 'mongodb://localhost:27017/cinema';
mongoose.connect(url, {
useUnifiedTopology: true,
useNewUrlParser: true,
useCreateIndex: true,
useFindAndModify: false
}, console.log(`DB running on ${url}`));
推荐阅读
- html - flex 不尊重 chrome 中的子项宽度
- python - Gunicorn Flask 应用程序不执行系统命令
- algorithm - 对于一组不相交的 AABB,哪种空间数据结构最快?
- docker - 什么是 docker 镜像参考?
- terminal - 如何在 Safari.app 关闭之前访问缓存的浏览历史记录?
- firebase - Xamarin.Android.Crashlytics 下载失败
- sql - 如何使用 Oracle 数据透视查询?
- ios - Xcode UITableViewCell 重复更改包含对象的位置和尺寸
- django - 当函数在 Django q-cluster 上运行时,为什么集成测试无法更新模型对象?
- ios - 在 UISegmented 控件中禁用段