2016-08-13 4 views
0

背景ユーザがJSONファイル(またはMongoDBの)に存在するかどうかをチェックする条件文

JSONファイルは、マングースのODMでのMongoDBから生成されています。しかし、私がエラーの多くを得ると、私はmongooseクエリをif文に追加するのは難しいです。このアプローチを使用

JSONアプローチ

、私は、JSONファイルにidを読み取るしようとする試みをMongoDBのコレクションをキャッシュします。

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

上記のJSONファイルは、特定の電報ボットのコマンドを実行することを許可されたユーザーのリストが含まれています

私はこのようになりますmods.jsonファイル(オブジェクトの配列)を持っています。

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'); 
    } 
    } 
}); 

動作するようになっている方法を、上記の簡単な説明:ボットは、メッセージは、そのIDである所有者からのものであるかどうかを確認することになっている「/テスト」コマンドを受信すると

をconfig.jsonファイルまたはmods.jsonファイルに一意のIDが格納されている任意のモデレータに格納されます。すべての単一のIDを介し

問題

次のコードチェックメッセージはMODからのものであるかどうかを確認します。その後、「あなたはモッズではありません」という複数のメッセージを吐き出します。条件文「if」の中でユーザがmodであることを確認する最も良い方法はどれでしょうか。

モンゴアプローチ

moongoseコールバックして照会することが必要な場合、私はこのようなシナリオであれば、条件を作成する方法を正確に知りません。しかし、このような状況では、この方法は明らかに優れています。

+0

これは、それが構築されているので、それが可能な場合は、mongoDBのクエリを取得しようとする必要があります。あなたはそれらのエラーを投稿することができ、我々は助けることができます。 –

+0

上記の編集を確認してください –

+0

カスタムmongooseメソッドがそれを見つけることを試みる可能性があります –

答えて

2

あなたは、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'); 
} 

をチェック行っていた場合にのみ、反復ごとに出力されることはありませんそのようにArray.someを使用することができます代わりにデータベースに尋ねるクエリ

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

またはむしろ 'fromId == config.owner || mods.some(x => x.userid); ' – str

+0

@str - yupp、それはずっと意味があり、すべての反復で同じ変数をチェックしません。 – adeneo

+0

は問題を解決しました! –

関連する問題