Node.js 使用节点保存到mongoDB时遇到问题
我试图保存API响应中的数据,并不断获取一个空对象。我在代码中放了一个console.log,它显示我从api得到了响应。在请求取回后,我似乎遗漏了什么 从index.js:Node.js 使用节点保存到mongoDB时遇到问题,node.js,mongodb,mongoose,Node.js,Mongodb,Mongoose,我试图保存API响应中的数据,并不断获取一个空对象。我在代码中放了一个console.log,它显示我从api得到了响应。在请求取回后,我似乎遗漏了什么 从index.js: const express = require('express') const bodyParser = require('body-parser') const path = require('path') const fetch = require('node-fetch') const exphbs = requi
const express = require('express')
const bodyParser = require('body-parser')
const path = require('path')
const fetch = require('node-fetch')
const exphbs = require('express-handlebars')
const db = require('./src/models/movie')
require('./src/db/mongoose')
const Movie = require('./src/models/movie')
const app = express()
const port = process.env.PORT || 3000
// APP CONFIG
app.use(express.json())
app.use(bodyParser.urlencoded({extended: true}))
// ROUTES - ADD
app.post('/movies/:imdbID', (req, res) => {
const imdb = req.params.imdbID
const url = `**api link and key**${imdb}`
const movie = fetch(url).then((res) => {
return res.json()
}).then((response) => {
console.log(response)
const addMovie = new Movie(response)
db.Movie.create(addMovie, (err, newMovie) => {
if(err){
res.render('movie404')
} else {
res.redirect('/')
}
})
}).catch((e) => {
res.status(500).send(e)
})
})
来自mongoose.js:
const mongoose = require('mongoose')
mongoose.connect('mongodb://127.0.0.1:27017/movietime-api', {
useNewUrlParser: true,
useCreateIndex: true,
useUnifiedTopology: true,
useFindAndModify: false
})
从details.Handlebar开始:
<h2>{{details.Title}}</h2>
<img src="{{details.Poster}}" alt="{{details.Title}}">
<p><em>{{details.Plot}}</em></p>
<p>Starring: {{details.Actors}}</p>
<p>Director: {{details.Director}}</p>
<form action="/movies/{{details.imdbID}}" method="POST">
<button type="submit">Add</button>
</form>
我希望重定向到索引页,然后使用上述模型创建一个新的数据库条目。您几乎就到了,只需要注意几件事:
app.post('/movies/:imdbID',(请求、回复)=>{
常量imdb=req.params.imdbID
常量url=`**api链接和键**${imdb}`
const movie=fetch(url)。然后((res)=>{
return res.json()
})。然后((响应)=>{
console.log(响应)
const addMovie=新电影(响应)
addMovie.save((错误,newMovie)=>{
如果(错误){
res.render('movie404',newMovie)//渲染细节
}否则{
res.redirect(“/”)
}
})
}).catch((e)=>{
资源状态(500)。发送(e)
你就快到了,只需要注意几件事:
app.post('/movies/:imdbID',(请求、回复)=>{
常量imdb=req.params.imdbID
常量url=`**api链接和键**${imdb}`
const movie=fetch(url)。然后((res)=>{
return res.json()
})。然后((响应)=>{
console.log(响应)
const addMovie=新电影(响应)
addMovie.save((错误,newMovie)=>{
如果(错误){
res.render('movie404',newMovie)//渲染细节
}否则{
res.redirect(“/”)
}
})
}).catch((e)=>{
资源状态(500)。发送(e)
// MONGOOSE/MODEL CONFIG
const Movie = mongoose.model('Movie',{
imdbID: String,
Title: String,
Poster: String,
Director: String,
Year: String,
Plot: String,
Ratings: String,
Rated: String,
Genre: String,
Writer: String,
Actors: String
});
module.exports = Movie;