为了账号安全,请及时绑定邮箱和手机立即绑定

用mongoose查询数据异步问题

用mongoose查询数据异步问题

慕工程0101907 2018-08-03 14:09:57
我需要将find()的查询结果暴露给其他页面,但是find()查询操作是异步的,该如何实现呢?var settings = require ("./settings");var mongoose = require('mongoose');var db = mongoose.connection;var Schema = mongoose.Schema;mongoose.connect('mongodb://'+settings.host+'/'+settings.db);var articleSchema = new Schema({  title    : String,  author   : Array,  aclTitle : Array,  creation : Array,  brife    : Array});var articleModel = mongoose.model('articles',articleSchema);var articleEntity = new articleModel({});db.on('error',function(){  console.log("连接出现错误")});db.once('open',function () {  console.log("连接成功!")});articleModel.find(function(e,d) {  module.exports = d;//我这里想把查询结果exports出去,另一个页面require进来})                   //但是因为是异步的,写在回调里,别的页面require进去是空对象,                     //写在回调外面,那就取不到这个查询结果
查看完整描述

1 回答

?
繁花如伊

TA贡献2012条经验 获得超12个赞

mongoose 有两种调用方式,1种callbacl,1种promise。

比如定义个getAll
1.callback

a.js
回调形式,外面function getAll(cb){
    xxModel.find({},cb);
}module.exports.getAll=getAll;

b.jsvar a=require('a');
a.getAll(function(err,result){    console.log(result);
})

2.promise

a.jsfunction personTest() {
  return Person.find({}).exec();
}

b.js
var a=requre('a');
a.getAll().then(fnction(rseult){
    console.log(result);
}).catch(function(err){
    console.log(err);
})


查看完整回答
反对 回复 2018-09-22
  • 1 回答
  • 0 关注
  • 1177 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信