koa js async await 在与 ajax 和 promise 一起使用时不起作用
koa js async await not working when used with ajax and promise
我正在使用 koa 作为休息后端,但是我无法让路由和 request/response 正常工作,当使用 axios 调用 URL 时,promise 失败了。
server.js
const route = require('koa-route');
const serve = require('koa-static');
const Koa = require('koa');
const app = new Koa();
const path = require('path');
const bodyParser = require('koa-bodyparser');
const Datastore = require('nedb'),
db = new Datastore({
filename: __dirname +'/storage.db' ,
autoload: true
});
// something
app.use(bodyParser());
app.use(serve(__dirname + '/dist'));
app.use(route.get('/api/projects', async function (next) {
let projects = [];
await db.find({}, function (err, docs) {
projects = docs;
});
this.body = projects;
}));
const PORT = process.argv[2] || process.env.PORT || 3000;
app.listen(3000);
当我使用 axios 向 /api/projects 发出请求时,我得到了空数组
来自我的 package.json
"scripts": {
"start": "nodemon server.js --exec babel-node --presets es2015,stage-2"
},
您将承诺与回调混合在一起,这很可能会导致您的问题。
坚持使用承诺:
app.use(route.get('/api/projects', async function (next) {
let projects = await db.find({});
this.body = projects;
}));
我正在使用 koa 作为休息后端,但是我无法让路由和 request/response 正常工作,当使用 axios 调用 URL 时,promise 失败了。
server.js
const route = require('koa-route');
const serve = require('koa-static');
const Koa = require('koa');
const app = new Koa();
const path = require('path');
const bodyParser = require('koa-bodyparser');
const Datastore = require('nedb'),
db = new Datastore({
filename: __dirname +'/storage.db' ,
autoload: true
});
// something
app.use(bodyParser());
app.use(serve(__dirname + '/dist'));
app.use(route.get('/api/projects', async function (next) {
let projects = [];
await db.find({}, function (err, docs) {
projects = docs;
});
this.body = projects;
}));
const PORT = process.argv[2] || process.env.PORT || 3000;
app.listen(3000);
当我使用 axios 向 /api/projects 发出请求时,我得到了空数组
来自我的 package.json
"scripts": {
"start": "nodemon server.js --exec babel-node --presets es2015,stage-2"
},
您将承诺与回调混合在一起,这很可能会导致您的问题。
坚持使用承诺:
app.use(route.get('/api/projects', async function (next) {
let projects = await db.find({});
this.body = projects;
}));