问题描述
我正在使用 Nodejs 和 MongoDB 创建商店定位器应用程序。 无法将数据从 MongoDB 检索到我的 API。 Postman 和 MongoDB 之间的连接运行良好,我可以在 MongoDB 中看到数据,但无法从 MongoDB 获取数据到我的前端 API。 forEach 循环不起作用
app.js
const {response} = require('express')
const express = require('express')
const mongoose = require('mongoose')
const app = express()
const port = 3000
const Store = require('./api/models/store')
app.use(function(req,res,next) {
res.header('Access-Control-Allow-Origin',"*");
next();
})
mongoose.connect('mongodb+srv://ashish_pwj:<password>@cluster0.vujgx.mongodb.net/test?retryWrites=true&w=majority',{
useNewUrlParser: true,useUnifiedTopology: true
});
app.use(express.json({
limit: '50mb'
}))
app.get('/api/stores',(req,res) => {
let dbStores = [];
let stores = req.body;
stores.forEach((store) => {
dbStores.push({
storeName: store.name,phoneNumber: store.phoneNumber,address: store.address,openStatusText: store.openStatusText,addressLines: store.addressLines,location: {
type: 'Point',coordinates: [
store.coordinates.longitude,store.coordinates.latitude
]
}
})
});
Store.create(dbStores,(err,stores)=>{
if(err){
res.status(500).send(err)
} else {
res.status(200).send(stores)
}
})
// console.log(dbStores)
// console.log('HERE!')
// console.log(req)
/*var store = new Store({
storeName: "test",phoneNumber: "2629265158",location: {
"type": "Point","coordinates": [
-122.5,37.7
]
}
})
store.save()*/
// res.send('You have posted')
})
app.delete('/api/stores',res) => {
Store.deleteMany({},(err)=>{
res.status(200).send(err)
})
})
app.get('/api/stores',res) => {
// res.send('Hello World!')
Store.find({},stores)=>{
if(err) {
res.status(500).send(err)
} else {
res.status(200).send(stores)
}
})
})
app.listen(port,() => {
console.log(`Example app listening at http://localhost:${port}`)
})
请求一个商店的 Json:
{
"recommendation": {},"storeNumber": "5758-13907","id": "15051","name": "La Cienega & Gregory Way","phoneNumber": "310-659-9562","coordinates": {
"latitude": 34.063584,"longitude": -118.376354
},"regulations": [],"address": {
"streetAddressLine1": "257 S. La Cienega Blvd.","streetAddressLine2": null,"streetAddressLine3": null,"city": "Beverly Hills","countrySubdivisionCode": "CA","countryCode": "US","postalCode": "902113301"
},"timeZoneInfo": {
"currentTimeOffset": -420,"windowsTimeZoneId": "Pacific Standard Time","olsonTimeZoneId": "GMT-08:00 America/Los_Angeles"
},"brandName": "Starbucks","ownershipTypeCode": "CO","open": true,"openStatusText": "Open until 6:00 PM","addressLines": ["257 S. La Cienega Blvd.","Beverly Hills,CA 90211"],"mop": {
"ready": false,"wait": null
}
}
我从邮递员那里得到的一家商店的响应 Json 片段:
{
"location": {
"coordinates": [
-118.376354,34.063584
],"type": "Point"
},"addressLines": [
"257 S. La Cienega Blvd.",CA 90211"
],"_id": "600d1f521efed638d808d32e","storeName": "La Cienega & Gregory Way","address": {
"streetAddressLine1": "257 S. La Cienega Blvd.","postalCode": "902113301"
},"__v": 0
},
解决方法
stores 必须是数组才能使用 forEach 方法对其进行迭代