对象以未定义的形式返回

时间:2014-04-01 18:00:26

标签: javascript node.js mongodb express

RouteHandler

function getProfile(req, res) {
    var graphs = dataSaver.getGraphs(req.user.email)
    console.log(graphs)
    res.render('profile', {
        title: 'EZgraph |  User Home',
        userGraphs: graphs
    })
}

Db代码

function getGraphs(username) {
    model.findOne({
            email: username
        },
        function(err, user) {
            if (err) {
                console.log('err')
            }
            if (!user) {
                console.log('no user found!')
            } else {
                var graphs = user.savedGraphs
                console.log(graphs)
                return graphs
            }
        }
    )
}

使用上述两种方法,我试图将从DB读取的数据传递给玉视图。问题是,在从db读取的第二个方法的范围内,对象被正常读取,console.log调用显示了这一点。一旦我返回此对象并返回到路由处理程序的范围,应该等于该对象的变量不打印为未定义。我该如何解决这个问题?

修改

在回复评论时,我尝试了以下内容,但它并不是很好,但我遇到了同样的问题。

处理程序+帮助

function getProfile(req, res) {
    var graphs = dataSaver.getGraphs(req.user.email, readSuccess)
    console.log(graphs);
    res.render('profile', {
        title: 'EZgraph |  User Home',
        userGraphs: graphs
    })
}

function readSuccess(data) {
    return data
}

数据库代码

function getGraphs(username, callback) {
    model.findOne({
            email: username
        },
        function(err, user) {
            if (err) {
                console.log('err')
            }
            if (!user) {
                console.log('no user found!')
            } else {
                callback(user.savedGraphs)
            }
        }
    )
}

0 个答案:

没有答案