代码之家  ›  专栏  ›  技术社区  ›  Aun

当与ajax和promise一起使用时,koa js async await无法工作

koa
  •  0
  • Aun  · 技术社区  · 7 年前

    我使用koa作为rest后端,但我无法使路由和请求/响应正常工作,当使用axios调用URL时,承诺就失败了。

    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发出请求时,我得到一个空数组

    从我的包裹里。json

    "scripts": {
        "start": "nodemon server.js --exec babel-node --presets es2015,stage-2"
      },
    
    1 回复  |  直到 7 年前
        1
  •  0
  •   robertklep    7 年前

    你把承诺和回扣混为一谈,这很可能会造成你的问题。

    app.use(route.get('/api/projects', async function (next) {
      let projects = await db.find({});
      this.body = projects;
    }));