I have a problem, I code using javascript and I use mongodb or mongoose as the database. I have a little information about async / await
I made a variable called “thread” to get data from mongoDB using const thread = await Threads.findOne({threadId})
the thread will have data: { “_id”: “6044d0d8940c3b2494ce135d”, “threadId”:”A001}
After that I want to use the _id from this “thread” to check the users markedPost, if there is the same threadId from user markedPost with _id from thread, I want to remove it by using splice
the users markedPost will have data for example: {“threadId”: “6044d0d8940c3b2494ce135d”, “threadId”: “6044d0e0940c3b2494ce135e”}
But the problem is the conditional code “if(markpost[i].threadId === thread._id)”, it didnt work, it didnt do anything even when the markpost[i].threadId is the same with thread._id, it didnt do the console.log(“found ya”)
So can u help me how to solve this? Here is my code below, and I also commented on the part that didnt work
const thread = await Threads.findOne({threadId}) const users = await Users.find({"markedPost.threadId":{ $in:[thread._id] }}) if(users.length > 0){ await users.map(async user=>{ const markpost = user.markedPost; let index = 0; for (let i = 0; i < markpost.length; i++) { console.log(markpost[i].threadId) console.log(thread._id) if(markpost[i].threadId === thread._id){ //this if didnt work at all, I dont know why, even when the threadId is the same with thread._id console.log("found ya") index = i; break } console.log(markpost[i]) } markpost.splice(index,1); await Users.findOneAndUpdate({ userId:user.userId },{ markedPost:[...markpost] }) }) }
This code will just print the threadId from the user markedPost, and will not do the console.log(“found ya”), even when the thread._id is the same with the markedPost.threadId The result is like below:
markpost[i].threadId: 6044d0e0940c3b2494ce135e thread._id : 6044d0e0940c3b2494ce135e { threadId: '6044d0e0940c3b2494ce135e', date: 2021-03-07T13:15:45.713Z } markpost[i].threadId: 6044d0d8940c3b2494ce135d thread._id : 6044d0e0940c3b2494ce135e { threadId: '6044d0d8940c3b2494ce135d', date: 2021-03-07T13:15:47.967Z }
Advertisement
Answer
Edit : My mistake in here, the thread._id type is ObjectId, while the other one is string, thus it wil return false
Thanks to Vishnu for correcting my mistake