CNode

一段koa调用mongoose的代码,求解惑

问答
Nnotek发布于11 年前最后回复11 年前7 回复4957 浏览0 收藏
function execQuery(query) {
	return function(fn){
		query.exec(function (e, res){
			(e) return fn(e);
			fn(null, res);  //想问下,这个fn是做什么的?去掉fn就没法正确返回数据
		});
	}
}
this.body = yield execQuery(query);
查看回复

回复 (7)

X
xiaokekeT#1·11 年前

fn 是没有错误时成功的回调

N
notek#2·11 年前
引用 xiaokekeTfn 是没有错误时成功的回调

@xiaokekeT 这个fn是在哪儿定义的呢?execQuery函数是手写的,非框架的,并没有定义这个fn啊

C
coordcn#3·11 年前
引用 notek@xiaokekeT 这个fn是在哪儿定义的呢?execQuery函数是手写的,非框架的,并没有定义这个fn啊

@notek fn是约定出来的,这个fn是给别人用的,别人在某个地方调用这个fn。

T
TigerSoaring#4·11 年前

/* 定义Schema */ var mongoose = require('mongoose'); var Schema = mongoose.Schema; //先定义你自己的Schema var yourSchema = new Schema({ //...... }); //定义查询函数listByQuery,名字自己起 yourSchema.statics.listByQuery(queryParams){ var query = this.find(queryParams); return yield query.exec(); }; module.exports = yourSchema;

/* 在controller调用 */ var yourModel= require('....../yourSchema'); this.body=yield yourModel.listByQuery(queryParams);

/* 写的没那么全,看懂基本思路即可 */

H
hwoarangzk#5·11 年前

看下co的源码,fn就是next

M
magicdawn#6·11 年前

Promise 比 thunk 好理解,真的

J
joesonw#7·11 年前

@nswbmw this.body = yield query.lean().exec();

参与回复
登录后即可参与回复。登录