javascript - 如何通过 REST API 使用feathers.js 读取文件?

标签 javascript node.js rest fs feathersjs

我的应用程序在端口 3030 上运行良好。我创建了一个名为“config”的新服务,并尝试通过 REST API 显示内容文件:我更改了该服务文件中的默认 GET 方法,如下所示:

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

我没有收到错误,但它不起作用。打开网址后http://127.0.0.1/configs/80866我的页面一直在加载。怎么了?

最佳答案

您正在调用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);
      });
    });
  }

关于javascript - 如何通过 REST API 使用feathers.js 读取文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41019604/

相关文章:

javascript - 使用 Select 的带有 ngModel 的 Angular *ngFor 具有意外的绑定(bind)

javascript - 如何在 react router dom 中将不存在的路由重定向到主页?

javascript - 如何在 React Native 中重用 React JS 组件

node.js - 验证不同类型用户的身份验证 token 的最佳方法是什么?

javascript - Discord.js 错误 = "message is not defined"

javascript - 使用nodejs将文件上传到s3

rest - 带有 REST API laravel 的 CSRF

java - 通过GSON将json字符串转换为对象

java - org.jboss.resteasy.client.ClientResponseFailure : Unable to find a MessageBodyReader of content-type text/plain and type class java. lang.String

javascript - 签名过程完成后,在 docusignapi 中返回签名文档或签名文档的链接