【问题标题】:Why after upgrade feathersjs I receive error: MethodNotAllowed为什么升级feathersjs后我收到错误:MethodNotAllowed
【发布时间】:2019-01-02 14:07:49
【问题描述】:

我将我的 feathersjs 版本从 2.x.x 升级到 3.9.0 现在我的钩子有问题(之后)

这是我的查询:

app.service('duties').patch(id, { $set: { status: 0 }}, {});

之后我的钩子中有以下代码:

var query = { "duties._id": result._id }

hook.app.service('parents').patch(null, { $set: { "duties.$.status": 0 } }, { query });

使用以前的版本可以正常工作,现在我在控制台中收到错误:

error: MethodNotAllowed: Can not patch multiple entries

我该如何解决我的问题?

【问题讨论】:

标签: node.js mongoose feathersjs feathers-hook


【解决方案1】:

为了提高开箱即用的安全性,默认情况下已禁用创建、删除和修改多个条目,必须使用 multi 选项启用(并明确保护)。迁移说明可以在crow.docs.feathersjs.com/migrating.html#database-adapters找到:

const service = require('feathers-<database>');

// Allow multi create, patch and remove
service({
  multi: true
});

// Only allow create with an array
service({
  multi: [ 'create' ]
});

// Only allow multi patch and remove (with `id` set to `null`)
service({
  multi: [ 'patch', 'remove' ]
});

请记住,当启用多个 removepatch 请求时,必须限制允许的查询(例如,基于经过身份验证的用户 ID),否则可能会删除或修补数据库中的每条记录。

【讨论】:

  • 这应该去哪里?是否有一个文件已经有一组我可以添加 {multi:true} 的配置?我尝试将它添加到模型配置部分和 src/services/my_service 中的 service.js 文件中,但都不起作用。如果我正在尝试聊天示例,我应该把它放在哪里?
  • optionssrc/services/&lt;name&gt;/&lt;name&gt;.service.js 文件中。
  • 您所说的“并明确保护”是什么意思?您的意思是清理、类型检查和更新挂钩以处理数组而不是单个项目?有没有一种方法可以轻松地从单个条目转换为多个条目挂钩?我不记得在更新之前需要构建钩子来处理多个条目。是否可以回到旧功能,尤其是创建功能?
  • 如果它在您的应用程序中工作,您可以再次启用它。问题主要出在removepatch。如果您不将查询限制在多重删除中,它可以例如可以删除所有内容。
  • @Daff 这不是 Feathers Crow 的变化吗?即> v4。只有我在从 npm 安装 v3.3.1 时才遇到这个问题。我是否误解了 npm 版本和羽毛版本之间的链接? Buzzard 更改日志详细说明 v3.3.1,但我看不到此更改的提及:github.com/feathersjs/feathers/blob/buzzard/packages/feathers/…
【解决方案2】:

可以在此处更正/启用(例如补丁)

\\ @Src/services/[name]/[name].service.js

.
.
.
module.exports = function(app) {
Const options = {
  Model: createModel(app),
  Paginate: app.get('paginate'),
  multi: ['patch']
};

.
.
.
},

【讨论】:

    猜你喜欢
    • 2013-09-03
    • 2014-05-29
    • 1970-01-01
    • 2019-07-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多