MongoDB:从单独的文件返回查询

时间:2019-03-04 21:26:33

标签: javascript node.js express

我不知道是否有可能,或者也许我不知道如何正确地查询这个问题,但是我想知道这是一种从一个文件查询MongoDB并将结果返回到另一个使用节点的方法。可以说我有两个文件route.js和helpers.js

  

routes.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 :(得分:0)

问题是,您期望在route.js文件中带有finder.findUser().then()的诺言,但没有在userHelpers.js中返回诺言,所以从没执行过诺言语句,因为从未实现诺言。 >

您的userHelpers.js文件应如下所示:

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

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

    return Promise.resolve(user);
  });
};