【问题标题】:Conditional statement to check if user exists in JSON file (or mongoDB)检查用户是否存在于 JSON 文件(或 mongoDB)中的条件语句
【发布时间】:2016-08-13 15:31:58
【问题描述】:

背景

JSON 文件是从带有 mongoose ODM 的 mongoDB 生成的。但是我很难在 if 语句中添加猫鼬查询,因为我遇到了很多错误。

JSON 方法

使用这种方法,我将 mongoDB 集合缓存到 JSON 文件中,尝试读取 id。

我有一个 mods.json 文件,看起来像这样(对象数组):

[
  {
    "userid": "58258161"
  },
  {
    "userid": "135207785"
  },
  {
    "userid": "268339963"
  },
  {
    "userid": "210152609"
  }
]

上面的 JSON 文件包含允许执行某个 Telegram Bot 命令的用户列表。

var config = require('./config.json');
var mods = require('./mods.json');

bot.onText(/\/test/i, function (msg) {
    var fromId = msg.from.id;
    var chatId = msg.chat.id;
    for (index in mods) {
        if (fromId == config.owner || mods[index].userid) {
            console.log('You Are A Mod!');
    } else {
        console.log('Not A Mod');
        bot.sendMessage(chatId, 'You are not a mod');
    }
    } 
});

对上述工作原理的简要说明:

当机器人收到“/test”命令时,它应该检查消息是来自 id 存储在 config.json 文件中的所有者,还是来自其唯一 id 存储在 mods.json 文件中的任何版主。

问题

以下代码检查每个 id 以确认消息是否来自 mod。随后吐出多条“你不是模组”的消息。在条件语句“if”中确认用户是 mod 的最佳方法是什么。

Mongo 方法

当使用 moongose 查询需要回调时,我不知道如何在这种情况下创建 if 条件。但是在这种情况下,这种方法显然会更好。

【问题讨论】:

  • 如果可以的话,您应该尝试让 mongoDB 查询正常工作,因为它就是为此而构建的。您可以发布这些错误,我们可以提供帮助。
  • 检查上面的编辑
  • 做了一个自定义的mongoose方法可以尝试查找
  • 我的建议是,与其拥有一个对象数组,不如只拥有一个对象。这是它的样子: mods = { "58258161": { //这里有额外数据 }, "135207785": {}, "268339963": {}, "210152609": {} };这样,如果您需要检查任何用户是否是版主,您可以获取Object.keys(mods),它返回一个键数组(在本例中为版主 ID),您可以简单地检查 ID 是否位于该数组中。注意:抱歉,格式错误

标签: javascript arrays if-statement indexing mongoose


【解决方案1】:

您可以改用Array.some 来检查 ID 是否在数组中,这样消息就不会在每次迭代时输出,只有在检查完成后才会输出

var isMod = fromId == config.owner || mods.some(x => fromId == x.userid);

if ( isMod ) {
    console.log('You Are A Mod!');
} else {
    console.log('Not A Mod');
    bot.sendMessage(chatId, 'You are not a mod');
}

您最好构建一个查询来询问数据库,例如

model.find({'mods.userid': config.owner}, function (err, docs) {...

【讨论】:

  • 或者更确切地说是fromId == config.owner || mods.some(x => x.userid);
  • @str - yupp,这更有意义,而不是在每次迭代中检查相同的变量。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-12-12
  • 2017-12-31
  • 2013-04-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多