express会写,用res.json就行。 但是Koa2不会了,划线的上面这个能行,下面的不行,不报错,但也不起作用,为何呢?要怎么写?
直接ctx.body喽
@JustforNode 不好使,两种写法都是上面划线的这个好使,下面的不好使
@zbsccc 分别把 ctx 或 ctx.response 打印出来看看有什么不一样
@JustforNode
最好把async和await配合使用吧
async
await
db.pool.query 是一个异步方法。 所以query callback 里面的方法是在响应以后才执行的。\
ctx.body = await db.pool.query('xxx', data, function(err, res){ return new Promise(function(resolve, reject){ if(err){ console.log('ERROr'); return resolve(-2); } if(!res){ return resolve(-3); } return resolve(1); }); });
@KingTree 但是console.log是正常执行的,你这种办法我写过一个, .then(ctx.response.body = -2)可以执行, 但是.then(()=>{ ctx.response.body = -2; })就不执行 .then(ctx.response.body = -2).catch(xxxxxxx)也不执行
@zbsccc
你陷入了一个异步误区。
直接返回Promise对象就行了啊。干嘛要.then呢? .then是Promise 参数方法执行完调用 resolve 或者 reject 才会执行.then方法。。。
建议你去理解一下 co 这个模块。最好能看懂源码。你就知道该怎么用了。
@KingTree 明白了!谢谢!
CNode 社区为国内最专业的 Node.js 开源技术社区,致力于 Node.js 的技术研究。
直接ctx.body喽
@JustforNode 不好使,两种写法都是上面划线的这个好使,下面的不好使
@zbsccc 分别把 ctx 或 ctx.response 打印出来看看有什么不一样
@JustforNode
最好把
async和await配合使用吧db.pool.query 是一个异步方法。 所以query callback 里面的方法是在响应以后才执行的。\
@KingTree 但是console.log是正常执行的,你这种办法我写过一个, .then(ctx.response.body = -2)可以执行, 但是.then(()=>{ ctx.response.body = -2; })就不执行 .then(ctx.response.body = -2).catch(xxxxxxx)也不执行
@zbsccc
你陷入了一个异步误区。
直接返回Promise对象就行了啊。干嘛要.then呢? .then是Promise 参数方法执行完调用 resolve 或者 reject 才会执行.then方法。。。
建议你去理解一下 co 这个模块。最好能看懂源码。你就知道该怎么用了。
@KingTree 明白了!谢谢!