MongoDB
 sql >> Teknologi Basis Data >  >> NoSQL >> MongoDB

Loop tidak menghasilkan true atau false berdasarkan kueri

Satu masalah yang Anda miliki adalah lokasi di mana Anda mencoba untuk mencatat hasil isFriend. Saat ini sedang dicatat tepat setelah Anda menyetel isFriend ke false saat Anda memasuki loop pencarian.

Pernyataan itu perlu dipindahkan tepat setelah perulangan for bagian dalam.

Tanpa semua masukan, sangat sulit untuk menebak di mana masalahnya.

Menggunakan yang berikut ini sebagai input (Dapatkah Anda memberikan input aktual dalam format JSON?):

var users = [
    {
        lastName: 'Smith',
        '_id': "51ee2017c2023cc816000001"
    },
    {
        lastName: 'Jones',
        '_id': "51ee2017c2023cc816000002"
    },
    {
        lastName: 'Macks',
        '_id': "51ee2017c2023cc816000003"
    }
];

var signedInUser = {
    friendRequest: [{
        "friendId": "51ee2017c2023cc816000002",
        "read": 0,
        "date_requested": "2013-07-23T06:29:39.021Z"
    }, {
        "friendId": "51ee203cc2023cc816000003",
        "read": 0,
        "date_requested": "2013-07-23T06:42:37.872Z"
    }]
};

function test(err, signedInUser) {
    console.log("\nsignedInUser.friendRequest\n" + JSON.stringify(signedInUser.friendRequest, null, 2));
    for (var x = 0; x < users.length; x++) {
        users[x].isFriend = false;
        console.log("\n" + users[x].lastName);
        for (var i = 0; i < signedInUser.friendRequest.length; i++) {
            console.log(users[x]._id + ' - ' + signedInUser.friendRequest[i].friendId);
            if (users[x]._id === signedInUser.friendRequest[i].friendId) {
                users[x].isFriend = true;
                console.log('test');
                break;
            }
        }
        console.log(users[x].isFriend);
    }

    console.log("\nFinal users:\n" + JSON.stringify(users, null, 2));
}

test(null, signedInUser);

Saya melihat hasil berikut:

signedInUser.friendRequest
[
  {
    "friendId": "51ee2017c2023cc816000002",
    "read": 0,
    "date_requested": "2013-07-23T06:29:39.021Z"
  },
  {
    "friendId": "51ee203cc2023cc816000003",
    "read": 0,
    "date_requested": "2013-07-23T06:42:37.872Z"
  }
]

Smith
51ee2017c2023cc816000001 - 51ee2017c2023cc816000002
51ee2017c2023cc816000001 - 51ee203cc2023cc816000003
false

Jones
51ee2017c2023cc816000002 - 51ee2017c2023cc816000002
test
true

Macks
51ee2017c2023cc816000003 - 51ee2017c2023cc816000002
51ee2017c2023cc816000003 - 51ee203cc2023cc816000003
false

Final users:
[
  {
    "lastName": "Smith",
    "_id": "51ee2017c2023cc816000001",
    "isFriend": false
  },
  {
    "lastName": "Jones",
    "_id": "51ee2017c2023cc816000002",
    "isFriend": true
  },
  {
    "lastName": "Macks",
    "_id": "51ee2017c2023cc816000003",
    "isFriend": false
  }
]

Selain pernyataan log berada di tempat yang salah (saya rasa saya tidak mengubah semantik kode Anda), dengan set input ini, logikanya berfungsi. Kemungkinan input yang Anda harapkan tidak seperti yang Anda terima.

Ternyata OP menggunakan driver asli luwak untuk nodejs dan, setelah meneliti menemukan jawaban untuk bagian perbandingan masalah di sini:Membandingkan _id dan string luwak



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Simpan satu dokumen dalam koleksi mongoDB menggunakan luwak

  2. MongoError:Opsi 'kursor' diperlukan, kecuali untuk agregat dengan argumen penjelasan

  3. Asinkron, Panggilan Balik, Penutupan, Astaga

  4. MongoDB/NoSQL:Menyimpan Riwayat Perubahan Dokumen

  5. Kesalahan Node.js Kesalahan:Tidak dapat menemukan modul 'luwak'