刚刚开始学习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)
A
H
你这个是在异步回调里才设置body的 你试着在这个middleware最后直接加一句this.body = 'hello world'; 应该就不是404了 其实你可以把save方法包装一下,用thunkify或者自己写 直接yield多好 就没这问题了
M
最后面 return promise;
A
引用 hwoarangzk你这个是在异步回调里才设置body的 你试着在这个middleware最后直接加一句this.body = 'hello world'; 应该就不是404了 其实你可以把save方法包装一下,...
@hwoarangzk 您好能稍微详细一点说下怎么包装吗?刚刚开始接触不是太会
var save = thunkify(post.save);
save()(function(){
this.body = {
result: 'hahah'
}
});
是这样吗?
A
引用 mukaiu最后面 return promise;
@mukaiu 是在整个函数的最后面return promise吗?
H
@alonprince
类似这样
A
J
this.body = yield promise;
yield可以直接用在promise上
参与回复
登录后即可参与回复。登录