对高级 Koa 功能感到困惑
Confused about advanced Koa functions
我有一个使用 Koa 生成器的项目,我对编写"控制器"感到沮丧。我寻找过示例,但实际上基于关键字的 Github 上没有很多结果,所以我怀疑我做错了什么。
我的应用使用 koa-router
将终结点路由到生成器。
那么控制器看起来像这样
export function* postEvent () {
const self = this
const user = yield User.findOne({slug: this.params.slug}).exec()
if (user) {
user.events.push({
[ ... ]
})
yield user.save( (error, event) => {
yield postBlacklist({
[ ... ]
})
.then( event => {
self.status = 200
self.body = "Event created for: " + user.slug
})
})
} else {
[ ... ]
}
}
如您所见,此生成器不起作用。我使用yield
让应用程序等待user.save()
完成。但我不能做yield postBlacklist()
因为我已经"用完"了我的yield
命令。如果我删除第二个yield
,我会得到一个 404。
那么,我如何将一个承诺返回的东西嵌套在另一个这样的东西中呢?
不,您不能从回调中产生。但是为什么这不起作用呢?
export function* postEvent () {
const user = yield User.findOne({slug: this.params.slug}).exec()
if (user) {
user.events.push({
[ ... ]
})
// should return a promise in latest versions of mongoose.
// Otherwise, write your own wrapper which does so.
var event = yield user.save();
yield postBlacklist({
[ ... ]
})
.then( event => {
this.status = 200
this.body = "Event created for: " + user.slug
});
} else {
[ ... ]
}
}
相关文章:
- 添加文字和评论功能更新Div
- JavaScript打印功能使日历停止工作
- 每当您在选择器内移动鼠标时,悬停功能就会重复
- 如何防止网页加载后自动启动功能
- 除修剪外的其他功能
- 悬停功能触发器
- 使用angularjs向浏览器发送servlet响应(下载功能)
- 删除CKEditor工具栏按钮,但不删除功能
- 异步facebook功能
- 如何将chrome扩展功能移植到移动设备(特别是jquery和trello)
- jQuery滚动功能只工作一次
- 如何将工具提示功能添加到高级图表中的 X 轴标签
- 骨干网中的高级路由.js具有功能分组
- 对高级 Koa 功能感到困惑
- 高级Javascript表单验证功能
- Chrome开发者工具:学习高级功能的最佳资源
- 高级弹出窗口功能
- 跨浏览器高级工具提示功能
- Highcharts -需要高级工具提示功能
- 谷歌地图Javascript API v3-如何执行一些更高级的功能