Невозможно получить доступ к полям документа MongoDB в Node.Js - PullRequest
0 голосов
/ 13 января 2020

Я использую mon goose и express в моем nodejs проекте. Пытаясь получить данные отсюда

app.get('/offers/:id', (req, res) =>{

//store the id from the url
var id = req.params.id;

//just a placeholder
var data = {title: "title", description:"description"};


//store the returned object in a variable
var oop  = offers.findById(id, function (err, user) {
    if(err){

       return err;

    }else{

        title = user.title;

        description = user.description;

        this.obj = {
            title:title,
            description:description
        }


        console.log(obj)
        return obj;
    }
 } );

    console.log(oop)


 res.render('single', {data:data});

});

, поэтому моя идея состоит в том, чтобы взять идентификатор поста из URL, найти его в базе данных, затем отобразить заголовок и описание в соответствующем месте на e * 1008. * template, но по какой-то причине я не могу получить доступ к возвращенным данным, и я получаю длинный список объектов, принадлежащих mongodb, без присутствия "title" или "description"

Ответы [ 2 ]

0 голосов
/ 13 января 2020

Попробуйте, у вашего кода есть пара проблем, а также вам нужно использовать .lean() для получения необработанных Js объектов, а не документов mongoDB:

app.get('/offers/:id', (req, res) => {

    //store the id from the url
    var id = req.params.id;

    //just a placeholder
    var data = { title: "title", description: "description" };

    //store the returned object in a variable
    offers.findById(id).lean().exec((err, user) => {
        if (err) {
            console.log(err);
            res.send(err)
        } else {
            data.title = user.title;
            data.description = user.description;
            this.obj = {
                title: title,
                description: description
            }
            console.log(obj);
            res.render('single', { data: data });
            // (Or) res.render('single', { data: obj });
        }
    });
});
0 голосов
/ 13 января 2020

Я только что изменил ваш код и добавил комментарии (все начинаются с "***").

app.get('/offers/:id', (req, res) =>{

    //store the id from the url
    var id = req.params.id;

    //just a placeholder
    var data = {title: "title", description:"description"};


    //store the returned object in a variables
    // var oop  = ***no need for this, the data you want will be  in the user variable.
    offers.findById(id, function (err, user) {
        if(err){

            return err;

        }else{

            // ***this needs to be changed to...
            // title = user.title;
            // description = user.description;
            // ***that...
            data.title = user.title;
            data.description = user.description;

            // ***what's that for??
            // this.obj = {
                // title:title,
                // description:description
            // }


            // ***this needs to be inside mongoose's callback
            res.render('single', {data:data});
        }
    });  

});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...