标签: feathersjs

如何扩展Sequelize模型?

有没有办法可以使用一个基类,它具有我的模型的所有公共属性和方法,但没有与数据库表链接,然后我可以在定义新模型时扩展这个基类.

在这里,我在node express中创建了基础,人员模型.我需要从基类扩展person类.

const person = sequelizeClient.define('person', {
    name: {
      type: DataTypes.STRING,
      allowNull: false
    }
  }, {
    hooks: {
      beforeCount(options) {
        options.raw = true;
      }
    }
  });

  const base = sequelizeClient.define('base', {
    id: {
      type: Sequelize.INTEGER,
      autoIncrement: true,
      primaryKey: true
    },
    createdBy: {
      type: Sequelize.INTEGER,
    },
    updatedBy: {
      type: Sequelize.INTEGER,
    },
    deletedBy: {
      type: Sequelize.INTEGER,
    }
  }, {
    hooks: {
      beforeCount(options) {
        options.raw = true;
      }
    }
  });
Run Code Online (Sandbox Code Playgroud)

在文档中说明了这一点

Sequelize Models是ES6类.您可以非常轻松地添加自定义实例或类级别方法.

我怎样才能使用ES6扩展类模式?

有一个类似的问题,但最近没有更新. 如何扩展Sequelize模型

javascript express sequelize.js ecmascript-6 feathersjs

11
推荐指数
1
解决办法
4456
查看次数

Jest 和 RANDOMBYTESREQUEST 打开句柄

我有一个运行Jest的FeathersJS api 项目进行测试。

\n

我的测试套件工作正常。但是,它总是以以下警告消息结束:

\n
Jest has detected the following 2 open handles potentially keeping Jest from exiting:\n\n  \xe2\x97\x8f  RANDOMBYTESREQUEST\n\n      at random (node_modules/bcryptjs/dist/bcrypt.js:70:56)\n      at node_modules/bcryptjs/dist/bcrypt.js:84:9\n      at node_modules/bcryptjs/dist/bcrypt.js:39:29\n      at Object.<anonymous> (node_modules/bcryptjs/dist/bcrypt.js:43:2)\n\n\n  \xe2\x97\x8f  RANDOMBYTESREQUEST\n\n      at Object.<anonymous>.module.exports (node_modules/nexmo/node_modules/uuid/rng.js:3:10)\n      at Object.<anonymous> (node_modules/nexmo/node_modules/uuid/uuid.js:57:18)\n      at Object.<anonymous> (node_modules/nexmo/src/JwtGenerator.js:1:1)\n
Run Code Online (Sandbox Code Playgroud)\n

此错误意味着什么以及如何修复它?

\n

注意:我很乐意添加更多详细信息,例如代码示例,但我真的不知道从哪里开始。请随时提出更多评论,我将相应地更新帖子。

\n

谢谢

\n

jestjs feathersjs

10
推荐指数
1
解决办法
4990
查看次数

在类型保护错误TS2532之后,Typescript对象可能未定义

我正在使用Typescript 2.3.4,Node.JS 8.0.0和Feathers框架(版本2.1.1).我正在制作一个使用服务的快速路线,当我在抓取羽毛应用上的单例实例后尝试使用该服务时,Typescript会抛出错误TS2532:对象可能是"未定义"错误,即使在显式类型保护之后.

routes.ts

import feathers = require('feathers');

export default function(this: feathers.Application) {
  const app = this;

  app.post(
    '/donuts',
    async (req, res) => {
      const someService = app.service<any>('predefined-service');

      if(typeof someService === "undefined" || !authService) {
        res.redirect('/fail');
        return;
      }

      try {
        let data = someService.create({test: 'hello'});
        console.log(data);
        res.redirect('/success');
      } catch(err) {
        res.redirect('/fail');
      }
    }
}
Run Code Online (Sandbox Code Playgroud)

我也尝试过写作,someService!.create...但这也不起作用.

感谢阅读,任何帮助赞赏<3 <3

javascript node.js typescript feathersjs

9
推荐指数
1
解决办法
6534
查看次数

羽毛调用自定义API方法

我用下面的内容定义我的api:

class MyFeathersApi {
  feathersClient: any;
  accountsAPI: any;
  productsAPI: any;

  constructor(app) {
    var port: number = app.get('port');

    this.accountsAPI = app.service('/api/accounts');
    this.productsAPI = app.service('/api/products');
  }

  findAdminAccounts(filter: any, cb: (err:Error, accounts:Models.IAccount[]) => void) {
    filter = { query: { adminProfile: { $exists: true } } }
    this.accountsAPI.find(filter, cb);
  }
Run Code Online (Sandbox Code Playgroud)

当我想使用数据库适配器方法时,从客户端,即查找和/或创建,我执行以下操作:

var accountsAPIService = app.service('/api/accounts');
accountsAPIService.find( function(error, accounts) {
  ...
});
Run Code Online (Sandbox Code Playgroud)

我如何从客户端调用自定义方法,例如findAdminAccounts()?

javascript node.js express feathersjs

8
推荐指数
1
解决办法
4532
查看次数

为什么我收到“测试完成后无法登录?”

这是我第一次尝试开玩笑。我正在尝试为我的服务运行“stock”测试,即,feathersjs 在通过 cli 创建服务时为您设置的测试。该服务使用带有回调的异步函数,作为最后一步,我在控制台中进行了一些日志记录。我收到错误:“测试完成后无法记录。您是否忘记在测试中等待某些异步内容?” 我怀疑测试在退出之前不会等待回调完成,因此当回调执行时会在测试完成后尝试记录。

这是库存测试:

  it('registered the service', () => {
    const service = app.service('order');
    expect(service).toBeTruthy();
  });
Run Code Online (Sandbox Code Playgroud)

我尝试了文档中提到的一些技术,例如 async/await:

  it('registered the service', async () => {
    const service = await app.service('order');
    expect(service).toBeTruthy();
  });
Run Code Online (Sandbox Code Playgroud)

我尝试使用“完成”:每次我都会收到相同的错误消息。

这是执行日志记录的服务代码部分:

  amqp.connect(amqp_url, (err0, conn) => {
    if(err0) {
      throw(err0);
    }

    conn.createChannel((err1, ch) => {
      if(err1) {
        throw(err1);
      }

      ch.assertQueue(orchToOrderQName);
      ch.consume(orchToOrderQName, function(msg) {
        ch.ack(msg);
        service.emit('create', msg);
      });
      orchToOrderChannel = ch;
    });

    conn.createChannel((err1, ch) => {
      if(err1) {
        throw(err1);
      }

      ch.assertQueue(orderToOrchQName);
      orderToOrchChannel = ch;
  
      console.log(" [*] Order …
Run Code Online (Sandbox Code Playgroud)

jestjs feathersjs

8
推荐指数
1
解决办法
1万
查看次数

FeathersJS采用Firebase架构

我有一个现有的Firebase应用程序(它是为快速原型设计而构建的,现在变大了,我不打算移动,因为现有的依赖项,也因为易用性和身份验证捆绑)而我正在尝试构建一个Rest API使用FeatherJS.

如果您使用标准数据库(MongoDB等),使用FeathersJS似乎很容易.如何将Firebase与Feathers集成在一起,保持最佳实践(服务架构,AOP)?我可以覆盖Feathers中的服务并将其映射到我的Firebase Rest端点吗?

我在Feathers中创建了一个自定义服务并尝试这样做:

  get(id, params) {
    return Promise.resolve(FirebaseRef.child(id).once('value'));
  }
Run Code Online (Sandbox Code Playgroud)

我明白了:

Converting circular structure to JSON error
Run Code Online (Sandbox Code Playgroud)

我正在做的是正确的吗?

architecture node.js promise feathersjs firebase-realtime-database

7
推荐指数
1
解决办法
966
查看次数

Feathers.js/Sequelize - >服务与两个模型之间的关系

我有通过sequelize使用mysql运行的feathers.js.这是有效的,我可以从表中收集数据.下一步是在模型中定义"连接".

我有一个表'status_id'和'country_id'的表.这些列引用元数据表中的id.在SQL中我会说:

SELECT status.description, country.description, detail 
FROM details 
INNER JOIN metadata status 
    ON (details.status_id = status.id AND status.type = 'status' 
INNER JOIN metadata country 
    ON (details.country_id =country.id AND country.type = 'country')
Run Code Online (Sandbox Code Playgroud)

在这种情况下,此元数据表不会很大,因此这种方法.它确实提供了我需要的灵活性.

在feathters.js中我需要做什么?

mysql node.js sequelize.js feathersjs feathers-sequelize

7
推荐指数
2
解决办法
5167
查看次数

无法侦听从 Feathers 服务器发送到客户端的事件

我正在构建一个使用Feathersocketio 的服务器。

我正在尝试使用羽毛通道机制来通知相关用户(连接)相关事件。
用户属于组,因此在连接到服务器后,我将连接添加到适当的通道。
发布后,在 inside 中app.publish,我获得了正确的数据,并看到连接已附加到通道,但无法弄清楚如何在客户端上监听它。

这是一个简化的channels.js

app.on('connection', async (connection) => {
    connection.userGroups.forEach((group) => {
        app.channel(`group.groupId`).join(connection);
    }
    app.channel('1').join(connection); // dummy channel
}

app.publish((data, context) => {
    console.log(app.channel('1')); // output shown below
   
    return app.channel('1');
});
Run Code Online (Sandbox Code Playgroud)

我使用 Postman 作为客户端,发送请求patch,并监听名为rooms patched(rooms 是我的服务名称)的事件,如Feathers 文档中所述。没有事件到达。
如果我使用原始的socketio实例并从那里发出,一切似乎都工作正常,并且我在客户端中收到事件

app.io.sockets.in('some room').emit('rooms patched', data);
Run Code Online (Sandbox Code Playgroud)

但据我了解,它凌驾于整个渠道机制之上。

通过检查 app.publish 的输出

Channel {
  _events: [Object: null prototype] {
    empty: [Function: bound onceWrapper] { listener: [Function …
Run Code Online (Sandbox Code Playgroud)

javascript socket.io postman feathersjs

7
推荐指数
1
解决办法
523
查看次数

Feather JS 与 Express JS

最近我一直在学习 Feather JS。但是,我对 Express 和 Feather 之间的区别感到非常困惑。人们使用 Feather 的最重要原因之一是因为它能够提供实时 API。Express 不能也使用实时吗?Feather 与 Express 的其他区别是什么?

node.js express feathersjs

6
推荐指数
1
解决办法
3485
查看次数

如何正确定义feathers客户端的Typescript类型

我从feathers 4.3 和Typescript 3.6 开始,有一个问题是如何为feathers 客户端(浏览器端)正确定义正确的Typescript 类型。

我从https://github.com/feathersjs-ecosystem/feathers-chat-react获取了 react 聊天代码,并将其翻译成 Typescript(大部分是直截了当的)。

在feathers.js 中有客户端的定义:

const client = feathers()
Run Code Online (Sandbox Code Playgroud)

的类型client推断为Application<any>

当我尝试调用authenticate客户端 ( application.js) 时出现问题:

client.authenticate().catch(() => this.setState({ login: null }))
Run Code Online (Sandbox Code Playgroud)

打字稿告诉我 TS2339: Property 'authenticate' does not exist on type 'Application<any>'

如果我将类型转换为 any,,但我宁愿避免这种情况。

我猜解决方案是将它实例化 const client = feathers<MyApplicationType>() 而不是根本不传递类型参数?

Typescript 类型应该是什么样子或应该如何构造的地方是否有文档?它是客户端上可用的不同服务类型的联合吗?

谢谢你的帮助!

typescript feathersjs typescript-3.6

6
推荐指数
1
解决办法
1080
查看次数