我不知道是否有可能,或者也许我不知道如何正确地查询这个问题,但是我想知道这是一种从一个文件查询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
})
};
这是我一直在努力的几个小时,现在改变了周围的情况,但无济于事。就像我说的那样,我可能一直在搜索错误,但是如果有人可以指出正确的方向或告诉我这不可能,那么将不胜感激。
答案 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);
});
};