2017-09-09 3 views
0

私はkoaをバックエンドとして使用していますが、ルーティングとリクエスト/応答が正常に動作するようにはできません。失敗する。koa js asyncがajaxで使用されていると約束していませんでした

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); 

私は要求私のpackage.jsonから私が手axiosと空の配列

を使用する/ API /プロジェクトを作る

"scripts": { 
    "start": "nodemon server.js --exec babel-node --presets es2015,stage-2" 
    }, 

答えて

0

あなたがしていますあなたの問題を引き起こす可能性が最も高いコールバックと約束をミックスしてください。約束を使用する

スティック:

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

nedbは、その構造をサポートして終了していない、私は、コードを更新しましたが、今Imがキャッチされない(約束で)TypeError例外を取得:this.props.project.mapではありません –

+0

約束をサポートしていない場合は、(直接) 'await'を使うことはできません。 NeDBのメソッドを約束するためには、['nedb-promise'](https://github.com/jrop/nedb-promise)のようなものが必要です。 – robertklep

関連する問題