2016-12-07 8 views
0

私のアプリケーションはポート3030上で正常に動作します。「config」という名前の新しいサービスを作成しましたが、REST APIを使ってコンテンツファイルを表示しようとしました。このサービスのファイルでデフォルトのGETメソッドを次のように変更しました:REST APIを使用してfeathers.jsを使用してファイルを読み取るにはどうすればよいですか?

'use strict'; 

const hooks = require('./hooks'); 
const fs = require('fs'); 
const path = require('path'); 
const filename = path.join(__dirname, '..', '..', '..', 'public'); 

class Service { 
    constructor(options) { 
    this.options = options || {}; 
    } 

    find(params) { 
    return Promise.resolve([]); 
    } 

    get(id, params) { 
    var file = fs.readFileSync(filename + '/player/' + id + '/config.txt', 'utf8', (err, data) => { 
     if (err) throw err; 
     var json = JSON.parse(data); 
     return Promise.resolve(json); 
    }); 
    } 

    create(data, params) { 
    if(Array.isArray(data)) { 
     return Promise.all(data.map(current => this.create(current))); 
    } 
    return Promise.resolve(data); 
    } 

    update(id, data, params) { 
    return Promise.resolve(data); 
    } 

    patch(id, data, params) { 
    return Promise.resolve(data); 
    } 

    remove(id, params) { 
    return Promise.resolve({ id }); 
    } 
} 

module.exports = function() { 
    const app = this; 

    // Initialize our service with any options it requires 
    app.use('/configs', new Service()); 

    // Get our initialize service to that we can bind hooks 
    const configService = app.service('/configs'); 

    // Set up our before hooks 
    configService.before(hooks.before); 

    // Set up our after hooks 
    configService.after(hooks.after); 
}; 

module.exports.Service = Service; 

エラーは表示されませんが、動作しません。 URLを開けた後はいつも私のページhttp://127.0.0.1/configs/80866がロードされています。なにが問題ですか?

答えて

0

readFileSyncは、ファイルを同期して読み込みますが、非同期コールバック(おそらく呼び出されることはありません)を渡します。そのコールバックでPromiseを返しますが、サービスメソッドでは返しません。 getは次のようになります。

get(id, params) { 
    return new Promise((resolve, reject) => { 
     const file = path.join(filename, 'player', id, config.txt); 

     fs.readFile(file, (error, data) => { 
     if(error) { 
      return reject(error); 
     } 

     const json = JSON.parse(data.toString()); 

     resolve(json); 
     }); 
    }); 
    } 
関連する問題