MongoDB: вернуть запрос из отдельного файла - PullRequest
0 голосов
/ 05 марта 2019

Я не знаю, возможно ли это, или, может быть, я не знаю, как правильно задать вопрос в Google, но мне интересно, есть ли у них способ запросить MongoDB из одного файла и вернуть результаты в другой, используя узел.Допустим, у меня есть два файла route.js и helpers.js

rout.js

const finder = require('../db_helpers/userHelpers');

exports.getIndex = (req, res, next) => {
        finder.findUser()
            .then(user => {
                if (!user) {
                    return res.redirect('/signup')
                }
                res.render('shop/landing', {
                    pageTitle: 'landing'
                });
            })
            .catch(err => {
                console.log(err)
            })
    };

helpers.js

const User = require('../models/user');

exports.findUser = (user) => {
    User.findOne()
        .then(user => {
            console.log(user);
            return user
        })
        .catch(err => {
            return err
        })
};

Это то, с чем я работал в течение нескольких часов, теперь меняю вещи вокруг и тому подобное, но безрезультатно.Как я и сказал, я, возможно, неправильно гуглил, но если бы кто-то мог указать мне правильное направление или сказать, что это невозможно, это было бы очень признательно.

1 Ответ

0 голосов
/ 05 марта 2019

Проблема в том, что вы ожидаете обещание с finder.findUser().then() в файле rout.js, но не возвращаете обещание в userHelpers.js, поэтому оператор then никогда не вызывался, так как обещание никогда не выполняется.

Ваш файл userHelpers.js должен выглядеть так:

const User = require('../models/user');

exports.findUser = user => {
  User.findOne((err, user) => {
    if (err) return Promise.reject(err);

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