配列にidマングースが含まれている場合は配列を取得します

user1008531

トリッキーなものです。$ inを使用できると思いましたが、クエリを実行したところ、探していた場所ではありませんでした。

これは私のスキーマです

var gameSchema = new mongoose.Schema({
    state: {
        type: String,
        default: "invited"
    },
    finished: {
        type: Boolean,
        default: false
    },
    players: {
        type: [{
            type: mongoose.Schema.Types.ObjectId,
            ref: 'users'
        }],
        required: true,
    },
    scores: [scoreSchema],
    chat : [chatSchema]
});

私が行おうとしているリクエストは次のとおりです。ユーザーIDを送信し、players配列にこのIDが含まれている場合は、配列内の他のID(配列の長さは常に2)を返します。

コンテキストは、以前にプレイしたことがある相手を検索できるということです。

これは私が持っていたものですが、「プレーヤー」は配列である必要があり、私が返したいゲームではないので、

exports.getFriends = function(id, cb){
    gameSchema.find({ id: { "$in": "players"} }, function(err, games){
        if(err){
            return cb(err, null);
        }
        else{
            return cb(null, games);
        }
    });
};
dvlsg

これを試すことができますか?

exports.getFriends = function(id, cb){
    gameSchema.find({ players: id }, function(err, games) {
        if (err) {
            return cb(err);
        }
        const players = games.map(game => game.players);
        const mergedPlayers = [].concat.apply([], players);
        const mappedPlayers = mergedPlayers.map(String); // convert ObjectIds to strings for comparisons.
        const idString = String(id);
        const filteredPlayers = mappedPlayers.filter(player => player !== idString);
        const uniquePlayers = filteredPlayers.filter((player, index, arr) => arr.indexOf(player) === index);
        return cb(null, uniquePlayers);
    });
};

渡したプレーヤーIDではない一意のプレーヤーIDの配列が必要であるという前提で操作しています。読みやすさを向上させるために、すべての配列メソッドをチェーンするのではなく、変数を分割したままにしました。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

マングースの配列に要素が含まれている場合は、Mongodbドキュメントを検索します

分類Dev

javascript配列| 値に文字列が含まれている場合はインデックスを返します

分類Dev

文字列配列に値が含まれているかどうかを確認し、含まれている場合はその位置を取得します

分類Dev

メニュー名が許可されたメニュー文字列配列に含まれている場合は、深くネストされたメニュー配列をフィルタリングします

分類Dev

配列に別の配列の文字列が含まれている場合は削除します

分類Dev

2番目の配列のアイテムに配列の最初のオブジェクトのIDが含まれている場合は、Angular8でオブジェクトの2つの配列をマージします

分類Dev

文字列が含まれている場合に配列値をフィルタリングする方法

分類Dev

配列値に文字列が含まれている場合は、List <string>から値を検索します

分類Dev

要素に文字列が含まれている場合は、配列から要素を削除します

分類Dev

キーが存在しない場合は値を配列にプッシュしますマングース

分類Dev

マングース-要素が配列にない場合はドキュメントをクエリします

分類Dev

存在しない場合は、マングースがアイテムを配列にプッシュします

分類Dev

Swift 3は、クラスに配列が含まれている場合にリークメモリを列挙します

分類Dev

配列1の要素が含まれている場合は、配列2の要素を削除します。

分類Dev

文字列が含まれている場合は配列を除外する

分類Dev

配列に特定の範囲の値が含まれている場合は行をフィルタリング

分類Dev

フィールドが配列に含まれる場合と含まれない場合があることを知って、特定のフィールドでng-repeatをフィルタリングし、配列を渡すにはどうすればよいですか?Angular 1.5

分類Dev

Excel-セルに配列の値が含まれている場合は、その値を抽出します

分類Dev

MongoDB:フィールドに配列が含まれている場合にエントリを削除する方法

分類Dev

番号が配列に含まれているかどうかを確認し、含まれている場合は新しい番号を生成します

分類Dev

URLに配列の文字列が含まれていない場合は、関数を実行します

分類Dev

URLが配列に含まれている場合は、ページ内のリンクの色を変更します

分類Dev

列に文字列の配列からの文字列が含まれている場合は、で新しい列を作成します

分類Dev

Swift-文字列が含まれている場合は配列を検索し、別の配列に追加します

分類Dev

マングースクエリ配列に別の配列の値の1つが含まれている

分類Dev

BigQueryを使用して、ある配列に別の配列のすべての値が含まれている場合、行をフィルタリングするにはどうすればよいですか?

分類Dev

文字列/記号が含まれている場合は、配列から要素を削除します

分類Dev

配列に文字列が含まれている場合はJSフィルター配列

分類Dev

親IDしかない場合は、プレーン配列をネスト配列に変換します

Related 関連記事

  1. 1

    マングースの配列に要素が含まれている場合は、Mongodbドキュメントを検索します

  2. 2

    javascript配列| 値に文字列が含まれている場合はインデックスを返します

  3. 3

    文字列配列に値が含まれているかどうかを確認し、含まれている場合はその位置を取得します

  4. 4

    メニュー名が許可されたメニュー文字列配列に含まれている場合は、深くネストされたメニュー配列をフィルタリングします

  5. 5

    配列に別の配列の文字列が含まれている場合は削除します

  6. 6

    2番目の配列のアイテムに配列の最初のオブジェクトのIDが含まれている場合は、Angular8でオブジェクトの2つの配列をマージします

  7. 7

    文字列が含まれている場合に配列値をフィルタリングする方法

  8. 8

    配列値に文字列が含まれている場合は、List <string>から値を検索します

  9. 9

    要素に文字列が含まれている場合は、配列から要素を削除します

  10. 10

    キーが存在しない場合は値を配列にプッシュしますマングース

  11. 11

    マングース-要素が配列にない場合はドキュメントをクエリします

  12. 12

    存在しない場合は、マングースがアイテムを配列にプッシュします

  13. 13

    Swift 3は、クラスに配列が含まれている場合にリークメモリを列挙します

  14. 14

    配列1の要素が含まれている場合は、配列2の要素を削除します。

  15. 15

    文字列が含まれている場合は配列を除外する

  16. 16

    配列に特定の範囲の値が含まれている場合は行をフィルタリング

  17. 17

    フィールドが配列に含まれる場合と含まれない場合があることを知って、特定のフィールドでng-repeatをフィルタリングし、配列を渡すにはどうすればよいですか?Angular 1.5

  18. 18

    Excel-セルに配列の値が含まれている場合は、その値を抽出します

  19. 19

    MongoDB:フィールドに配列が含まれている場合にエントリを削除する方法

  20. 20

    番号が配列に含まれているかどうかを確認し、含まれている場合は新しい番号を生成します

  21. 21

    URLに配列の文字列が含まれていない場合は、関数を実行します

  22. 22

    URLが配列に含まれている場合は、ページ内のリンクの色を変更します

  23. 23

    列に文字列の配列からの文字列が含まれている場合は、で新しい列を作成します

  24. 24

    Swift-文字列が含まれている場合は配列を検索し、別の配列に追加します

  25. 25

    マングースクエリ配列に別の配列の値の1つが含まれている

  26. 26

    BigQueryを使用して、ある配列に別の配列のすべての値が含まれている場合、行をフィルタリングするにはどうすればよいですか?

  27. 27

    文字列/記号が含まれている場合は、配列から要素を削除します

  28. 28

    配列に文字列が含まれている場合はJSフィルター配列

  29. 29

    親IDしかない場合は、プレーン配列をネスト配列に変換します

ホットタグ

アーカイブ