使用 Mongoose 从 MongoDB 导入 img Url 不起作用
Posted
技术标签:
【中文标题】使用 Mongoose 从 MongoDB 导入 img Url 不起作用【英文标题】:Importing img Url from MongoDB using Mongoose doesn't work 【发布时间】:2019-02-23 03:13:27 【问题描述】:我正在尝试使用 mongoose 从我的数据库 (mongodb) 导入 img url,并使用 EJS 显示它,我的问题是我总是未定义。
我使用 findById 得到的数据是 "item" =
[
_id: 5b809b2c74e2f54c20ae30da,
brand: 'honda',
model: 'cbr250r',
price: 20000,
amount: 20,
img: 'https://news.maxabout.com/wp-content/uploads/2016/12/22.png',
backImg: 'https://wallpapercave.com/wp/wp3065342.png',
views: 1,
desc: 'this is a bike description'
]
我正在尝试使用以下路径获取我的“backImg”:“item[0].backImg”。当我 console.log 它我得到未定义。我也试过“item.backImg”
这是包含函数的路由文件:
const router = require('express').Router();
const bodyParser=require('body-parser')
const urlencodedParser =bodyParser.urlencoded(extended:false)
router.use(bodyParser.json());
router.use(bodyParser.urlencoded( extended: true ));
const itemModel = require('../models/itemsModel')
const userModel = require('../models/userModel')
//items//
router.get('/:_id',(req,res)=>
console.log(req.params._id)
let q = itemModel.find(_id:req.params._id)
q.exec(function(err,item)
if(err)
console.log(err)
else
console.log(item)
console.log(item[0].brand)
console.log(item[0].backImg)
console.log(item.backImg)
res.render('./pages/items' , item:item,user: req.user, )
)
)
module.exports = router
【问题讨论】:
请显示您的相关客户端服务器代码。 【参考方案1】:我觉得应该是这样的
..... // previous code
itemModel.findOne(_id:req.params._id)
.then((item)=>
if(!item)
console.log("No record found");
console.log(item)
console.log(item.brand)
console.log(item.backImg)
)
.catch(err=>
console.log("Error",err)
)
在这里你可以看到我使用了猫鼬的 findOne 方法,它只会从数据库中给出 1 个结果(单个对象)。还要检查 req.params._id
是否不是 undefined
。如果您有任何疑问,请告诉我。
【讨论】:
嗨,当使用 FindOne 时,它只给了我一个对象 instad 一个数组,结果非常好,但仍然将“backImg”控制台记录为“未定义”:\,【参考方案2】:所以看起来那些作为 undefiend 导入的字段没有添加到项目架构中,所以这就是问题
【讨论】:
以上是关于使用 Mongoose 从 MongoDB 导入 img Url 不起作用的主要内容,如果未能解决你的问题,请参考以下文章
从上下文中获取模型与导入 - apollo server express & mongoose
MongoDB / Mongoose 单元测试 - 最佳实践? [关闭]