Javascript 用于检查JSON文件(或mongoDB)中是否存在用户的条件语句

Javascript 用于检查JSON文件(或mongoDB)中是否存在用户的条件语句,javascript,arrays,if-statement,indexing,mongoose,Javascript,Arrays,If Statement,Indexing,Mongoose,背景 JSON文件是从带有mongoose ODM的mongoDB生成的。然而,我很难在if语句中添加mongoose查询,因为我会遇到很多错误 JSON方法 使用这种方法,我将mongoDB集合缓存到一个JSON文件中,尝试读取ID 我有一个mods.json文件,如下所示(对象数组): 上面的JSON文件包含允许执行某个电报Bot命令的用户列表 var config = require('./config.json'); var mods = require('./mods.json');

背景

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

JSON方法

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

我有一个mods.json文件,如下所示(对象数组):

上面的JSON文件包含允许执行某个电报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');
    }
    } 
});
对上述工作原理的简要说明:

当bot接收到“/test”命令时,它应该检查消息是否来自id存储在config.json文件中的所有者或唯一id存储在mods.json文件中的任何主持人

问题

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

Mongo方法


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

您可以使用
数组。一些
相反,用于检查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) {...

您可以使用
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) {...

如果可以的话,您应该尝试让mongoDB查询工作,因为这就是它的构建目的。你可以发布这些错误,我们可以提供帮助。检查上面的编辑制作了一个自定义mongoose方法可以尝试找到我的建议是,与其拥有一个对象数组,不如拥有一个对象。下面是它的样子:mods={“58258161”:{//extra data Here},“135207785”:{},“268339963”:{},“210152609”:{};这样,如果您需要检查是否有任何用户是版主,您可以获取
Object.keys(mods)
,它返回一个键数组(在本例中为版主ID),您只需检查ID是否位于该数组中。注意:很抱歉,对于错误的格式,如果可以的话,您应该尝试让mongoDB查询工作,因为这就是它的构建目的。你可以发布这些错误,我们可以提供帮助。检查上面的编辑制作了一个自定义mongoose方法可以尝试找到我的建议是,与其拥有一个对象数组,不如拥有一个对象。下面是它的样子:mods={“58258161”:{//extra data Here},“135207785”:{},“268339963”:{},“210152609”:{};这样,如果您需要检查是否有任何用户是版主,您可以获取
Object.keys(mods)
,它返回一个键数组(在本例中为版主ID),您只需检查ID是否位于该数组中。注意:很抱歉,格式错误,或者说
fromId==config.owner | | mods.some(x=>x.userid)
@str-yupp,这更有意义,不是在每次迭代中都检查相同的变量,而是
fromId==config.owner | | mods.some(x=>x.userid)
@str-yupp,这更有意义,在每次迭代中不检查相同的变量。