koa中我想等数据库写入完之后再返回值,但发现请求是404 - CNode技术社区

koa中我想等数据库写入完之后再返回值,但发现请求是404
发布于 11 年前 作者 alonprince 6584 次浏览 最后一次编辑是 9 年前 来自 问答

刚刚开始学习koajs,我在想把通过post传入的数据存入数据库之后再应答请求 具体代码:

function *(next) {
 var _this = this;
 var post = new Post({
 content: this.request.body.content,
 sequence: this.request.body.sequence
 });
 var promise = new Promise(function(resolve, reject) {
 post.save(function(err, result) {
 if (err) {
 reject();
 }else {
 resolve();
 };
 });
 });
 
 promise.then(function() {
 return _this.body = {
 result: 'haha'
 }
 }, function() {
 return _this.body = {
 result: 'wuwu'
 }
 });
 }

然后我发现我的请求返回值都是404,使用了bodyparser包,不知道和这个有没有关系

8 回复

你这个是在异步回调里才设置body的 你试着在这个middleware最后直接加一句this.body = ‘hello world’; 应该就不是404了 其实你可以把save方法包装一下,用thunkify或者自己写 直接yield多好 就没这问题了

最后面 return promise;

@hwoarangzk 您好能稍微详细一点说下怎么包装吗?刚刚开始接触不是太会

var save = thunkify(post.save);
save()(function(){
	this.body = {
		result: 'hahah'
	}
});

是这样吗?

@mukaiu 是在整个函数的最后面return promise吗?

@alonprince <pre> var save = thunkify(post.save); var result = yield save(); this.body = result; </pre> 类似这样

@hwoarangzk 好的,我试下,谢谢

@hwoarangzk 解决问题了,谢谢

this.body = yield promise;

yield可以直接用在promise上

回到顶部

AltStyle によって変換されたページ (->オリジナル) /