Импорт img Url из MongoDB с использованием Mongoose не работает - PullRequest
0 голосов
/ 19 сентября 2018

Я пытаюсь импортировать img url из моей базы данных (mongodb) с помощью mongoose и отображать его с помощью 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

Ответы [ 2 ]

0 голосов
/ 19 сентября 2018

так что кажется, что те поля, которые были импортированы как undefiend, не добавлены в схему элемента, так что это была проблема

0 голосов
/ 19 сентября 2018

Я думаю, что это должно быть так

..... // 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 для mongoose, который даст только 1 результат (один объект) из базы данных. Также проверьте, если req.params._idне undefined. Если у вас есть какие-либо вопросы, дайте мне знать.

...