【问题标题】:how to implement own code on services created by feathersJS如何在feathersJS创建的服务上实现自己的代码
【发布时间】:2018-07-13 02:43:32
【问题描述】:

我想在一个项目中使用feathersJS。我已经浏览了文档,还尝试浏览了文档中提供的聊天应用程序,但我仍然没有搞定。

据我了解,他们创建服务和数据库的每个功能,例如用户和消息,都创建了两个使用 Nedb 数据库的服务。

我的问题是,我是否应该为要实现的每个功能创建包含数据库的服务?其次,对于feathers创建的每一个服务都有app.js,所以我想写的除了feathersJS创建的逻辑代码需要写在app.js上还是需要自己创建另一个app.js?

如果您能向我推荐一些使用 feathersJS 完成的项目,我将不胜感激。

【问题讨论】:

  • 问题缺少stackoverflow.com/help/mcve和清晰的问题陈述。你尝试了什么? 我是否应该为要实现的每个功能创建包含数据库的服务 - 我不确定这意味着什么。请出示您当前的代码。

标签: javascript node.js feathersjs


【解决方案1】:

您是否使用 CLI 创建应用程序和服务?也许会更容易。但实际上并不是必须为每个服务都创建一个数据库,除非真的需要使用超过 1 个。

关于逻辑代码,这取决于。它可以作为express middlewareservice hooks (for every service or for the application) 处理。第二种情况更多的是关于预处理和后处理客户端请求。当然,对自身进行的操作可以是一个类、一个函数,甚至是一个 API 调用。例如,您可以仅在执行“get”操作之前检查客户端在请求中发送的参数,将 ckeck 添加到 GET before hook 中。还有一个钩子来检查身份验证。

//in other some place
module.exports = (hook) => {
    return hook.params.query.device_type === 'smartphone' 
    ? console.log('is a smartphone request')
    : console.log('is not a smartphone request');
}

//src/services/devices/devices.hooks.js
const { authenticate } = require('@feathersjs/authentication').hooks;
const myVerification = require('path/to/myverification');
const myVerification2 = require('path/to/myverification2');

module.exports = {
  before: {
    all: [ authenticate('jwt') ],
    find: [],
    get: [myVerification, myVerification2],
    create: [],
    update: [],
    patch: [],
    remove: []
  },

  after: {
    all: [],
    find: [],
    get: [],
    create: [],
    update: [],
    patch: [],
    remove: []
  },

  error: {
    all: [],
    find: [],
    get: [],
    create: [],
    update: [],
    patch: [],
    remove: []
  }
};

【讨论】:

  • 感谢 Luiz 的回答。我有不同的表,它们通过外键相互链接,所以我想使用 NeDb 来实现这些表。我只是想只使用featherjs而不使用express或其他我的意思是只使用feathers提供的东西。为清楚起见,它是否需要使用例如 express 作为客户端并作为后端 featherjs,或者我只能通过使用 featherjs 构建应用程序。在文档中的聊天应用程序中,他们只使用了 featherjs。如果您能给我一些说明,我将不胜感激。
  • Feathers 是基于 fw express 的。换句话说,所有在快递中起作用的东西都应该在羽毛中起作用。但重点是,当您通过 Feathers CLI 创建服务时,它通常会询问您正在使用或想要使用的数据库。种类它有一个很好的抽象。但是这个问题确实会影响数据库选择本身。如果您有关系结构并且需要使用 NeDB,那么您将需要更改数据方法(不使用表结构)。否则,您可以通过羽毛使用一些用于关系数据库的适配器,例如 Sequelize 或 Knex,而不是 NeDB。
  • 谢谢你的解释
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-05-11
  • 1970-01-01
  • 1970-01-01
  • 2012-11-18
  • 1970-01-01
相关资源
最近更新 更多