关于mongoose的数据请求问题。拿不出封装的数据
express里写了这样的路由来返回json数据,fetch是封装好的数据请求
app.get('/getData', function(req, res) {
Article.fetch(function (err,articles) {
if (err){
console.log(err)
}
res.send({
articles:articles
})
})
});
fetch方法
//自定义的存储过程
ArticleSchema.statics = {
fetch: function(cb) {
return this
.find({})
.sort('meta.updateAt')
.exec(cb);
},
findById: function(id,cb){
return this
.findOne({_id:id})
.exec(cb);
}
}
这样是可以的到请求数据的,但是我想封装一下数据库的请求方法,就写成了如下的方法
function getArticle(data) {
Article.fetch(function(err,articles){
if(err){
console.log(err)
}
data=articles
})
//这里的data获取不到
return data;
}
这里的data死活获取不到,这是为什么呢?
5 回复
异步的问题,getArticle这个函数直接就返回了data, 这时候data=articles这句话还没有执行…
先用回调的方式将data传出去 然后学学Promise,封装成promise的方式.
nihao
niho
@178220709 也就是在fetch这个函数中就已经return了data中了,所以我想获取的话,需要传入一个回调函数来获取data,我先去试试,谢谢您的回答了