问题标签 [feathers-hook]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
feathersjs - Feathersjs socketio如何正确设置params.route?
我有一个 Feathersjs API,它使用 REST 可以向一个 URL 提供 GET 请求,比如http://server.com/service-name/:fieldName
wherefieldName
有一个字符串值。API 将 的值分配fieldName
给params.query
。
在开发 React Native 应用程序时,我正在尝试使用羽毛 socketio 客户端发出相同的请求。请求如下所示:
上面的请求发送到服务器,但值fieldName
是或者是undefined
其他不需要的值,因为服务器返回一个空的结果集。我还读到setSlug 钩子是一个选项,但我不知道该怎么做。
有人可以通过将请求中的实际值fieldName
发送到服务器来帮助我解决这个问题吗?
[编辑] 检查 API 服务器上的日志后,我发现 REST API 请求具有正确的params.route
对象:
socketioparams.route
请求为空:
虽然我很高兴知道问题出在哪里,但有人能告诉我如何params.route
使用 socketio 请求在 React Native 中正确设置吗?
feathersjs - FeathersJS 从 1 次 REST 调用将 2 条记录插入 MySql
当我使用 .create(item) 方法从客户端(在浏览器中)执行 INSERT 时,我看到 1 个通过 websocket 或 REST 调用到 feathersjs。我看到一个请求进入 Feathersjs。由于未知原因,我看到在 MySql 中创建了 2 行,并且在日志中看到了 2 行: {"message":"after: name_of_service - Method: create","level":"info"}
使用 sequelize 4.42.0 和 feathers-sequelize 6.0.1
从服务器代码中运行 create() 时,仅从客户端运行时我没有问题。
我发现https://github.com/feathersjs-ecosystem/feathers-rethinkdb/issues/80看起来很相似,但适用于不同的数据库,并且解释不适合 MySql。
我出于其他原因切换到 MariaDB,但显然没有任何改变。
我正在使用 FeathersJS v3.x 并升级到 v4.x 以查看是否可以修复它。没有。当我工作时,我一直在制作自己的插入方法,但使用内置方法会很好。
我尝试在 REST 和 websocket 之间切换。
我的钩子:
服务:
我希望它在 MySql 表中插入 1 行。但是得到了 2。我预计日志中有一行用于后钩,但看到 2。这已经发生了几个月,我在想,嘿,也许我不是唯一的。
typescript - 使用关系记录丰富 Feathers 服务的设计模式
我正在尝试创建一个具有数据一对多关系的简单应用程序。一个站点包含许多位置。我正在使用羽毛 js 和续集(使用 sqlite)。羽毛中的标准GET
功能将返回一个站点或站点列表。但是,我看不出您“也应该”如何返回子记录。
如果我直接在 sequelize 中执行此操作,我会执行以下操作:
从羽毛指南看来,我似乎可以将这个逻辑放在一个钩子中(在标准查询之后?),并用这个查询的结果替换收集的数据(并将数据库调用次数加倍)。或者我可以只查询当前位置的位置siteId
(parentId
再次将数据库调用次数加倍)。
但是,我想知道羽毛中是否有一种更简洁的方法,以确保每次进行标准GET
调用时,都包含它的子元素。
javascript - 如何自定义 Feathersjs 的错误对象?
假设我在调用服务时抛出 GeneralError,如何制作我想要的错误对象:
我已经尝试在错误钩子上添加这个
但仍然不能,并且仍然返回羽毛的默认错误对象:
feathersjs - FeathersJs:检查用户是项目创建者还是关联项目的创建者
我有两个服务:posts
和comments
. 每个帖子可以有多个评论。用户 1 创建帖子,用户 2 在此帖子中创建评论。两个用户都应该能够更新、修补或删除创建的评论。如何正确限定两个用户以修改用户 2 创建的评论?
帖子模型
评论模型
帖子只能由帖子创建者删除,因此setField
在feathers-authentication-hooks
这种情况下可以很好地删除帖子。但是,我如何使帖子创建者有资格管理其帖子中的评论?
feathersjs - 从另一个钩子调用羽毛钩子
有没有办法创建一个调用 2 个不同的其他钩子的钩子,然后||
在它们之间做一个?
我想调用这个authenticate('jwt')
钩子,如果这个钩子失败,调用一个自定义钩子来查看请求是否是本地的(所以我不需要身份验证)。如果第二个钩子是肯定的,我会继续请求。如果两者都失败了,那就不行了。
如果我一个接一个地调用钩子,第一个失败,所以服务失败。
这可以实现还是有更好的方法来做到这一点?
提前致谢
feathersjs - 如何在 FeathersJS 中返回属于用户的结果并限制在结果中发送的其他数据?
我是 feathersjs 的新手,我对如何限制用户查看其他人的数据感到头疼。例如,当您从邮递员那里找到/get(id) http://localhost/users时,您会看到当前注册的所有用户的列表。但是我只想返回当前用户数据。从:
至:
如何在 after hook 函数中过滤结果?有人可以解释一下。
答: 错过了一个基本步骤。所有的 find()、update() 等都基于父类返回结果。通过在您自己的类中自定义 find() 方法并使用 Sequlize.findOne({}) 您可以返回您想要的结果。
该死!我很愚蠢,没有完全阅读文档。
feathersjs - 如何识别上下文是来自身份验证钩子(某些钩子)还是其他钩子?
我正在为所有用户服务之前设置一个钩子。钩子是检查请求者的角色并决定是继续请求还是抛出禁止。
需要在我的钩子之前调用 Auth 以确保事先填充了上下文用户。没关系。
但是,由于首先调用了我的钩子,因此身份验证将无法获取用户,导致由于找不到上下文用户而被禁止抛出。
我想要做的是识别上下文是否来自身份验证,以便我可以让身份验证通过而无需检查。但是怎么做?还是我的方法错了?
仅供参考:仅[authenticate("jwt"), acl]
在所有之前。acl
是我的钩子。同样,auth(jwt)
来自@feathersjs/authentication 的钩子
-whotfisthis,请原谅糟糕的语法。
feathersjs - 什么是 feathers.js 中的 context.dispatch
我阅读了 feathersjs API 文档。(这个)
但我不明白什么是context.dispatch
。这有什么作用。
context.dispatch 是一个可写的可选属性,包含应该发送到任何客户端的数据的“安全”版本。如果 context.dispatch 没有设置 context.result 将被发送到客户端。
“安全”版本是什么意思?
我什么时候想使用它?
sequelize.js - 在钩子续集关联之前,feathersjs 中没有返回任何内容
我在我的用户服务中创建了一个 before 挂钩,旨在包含来自组织模型的记录。用户和组织之间的关系是
before 钩子称为 attach-orgnaization.js,看起来像
它像这样在 users.hooks.js 中设置
当我 GET 时,/users?id=1
我让用户返回与用户关联的组织 in users_to_organizations
,这恰好是 org 3“测试组织”。
我期待在回复中看到更多与组织相关的字段。
相反,我只看到
单步调试器(pycharm)我可以看到钩子中的代码正在执行。
我猜要么 sequelize 没有看到关系,要么feathers 没有将包含添加到查询中。
我可能会错过什么?
谢谢!