javascript - 用mongoose查询数据异步问题

查看:103
本文介绍了javascript - 用mongoose查询数据异步问题的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

我需要将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进去是空对象,
                     //写在回调外面,那就取不到这个查询结果

解决方案

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

比如定义个getAll
1.callback

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

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

2.promise

a.js
function 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);
})

这篇关于javascript - 用mongoose查询数据异步问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆