Collection#find:改为传递函数

Posted

技术标签:

【中文标题】Collection#find:改为传递函数【英文标题】:Collection#find: pass a function instead 【发布时间】:2019-02-14 06:42:46 【问题描述】:

我是 node.js 的新手,我正在使用 discord.js 开发一个不和谐的机器人,我正在尝试使用命令来分配角色。当我执行代码并输入命令时,它可以成功运行,但在控制台中弹出“DeprecationWarning: Collection#find: pass a function instead”,我该如何摆脱这个?

https://i.imgur.com/agKFNsF.png

【问题讨论】:

欢迎来到 Stack Overflow!请带上tour,四处看看,通读help center,特别是How do I ask a good question? 邮政编码、标记、错误消息等作为文本,而不是作为图片的文字。原因:meta.***.com/q/285551/157247 请具体说明您遇到的问题(错误消息似乎很清楚)。 【参考方案1】:

此警告是由以下行引起的:

var role = message.guild.roles.find('name', 'Epic Gamer');

在早期版本的 Discord.js 上,这将是有效的,但他们现在重做了 find 函数。您无需传入属性和值,而是传入过滤函数。这应该有效:

var role = message.guild.roles.find(role => role.name === "Epic Gamer")

我们没有传入'name'(属性)和'Epic Gamer'(我们要搜索/过滤掉的值),而是传入箭头函数role => role.name === 'Epic Gamer'。这就像映射。 findmessage.guild.roles 中的每个角色作为role 传递给函数,然后检查我们想要的属性是否等于我们想要的值。

如果您想详细了解find 功能,请查看the official documentation.

【讨论】:

【参考方案2】:

find方法中传递一个谓词函数,看看find函数上的discord.js文档。

find 语句更改为

var role = message.guild.roles.find(role => role.name === 'Epic Gamer');

希望这会有所帮助!

【讨论】:

谢谢你我现在已经这样做了,错误消失了,但是当我输入“角色 1”和“角色 2”时问题仍然存在,机器人给了我多个角色而不是删除其他角色。就像我写的删除角色代码不起作用,有什么想法吗?

以上是关于Collection#find:改为传递函数的主要内容,如果未能解决你的问题,请参考以下文章

来自mongodb的多个集合的总和

MongoDB 查询文档

MongoDB 查询文档

find 不是函数 jquery

查找结果的操作函数

Java集合框架