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)
}
}
)
}