Am trying to use the userId
from the Params to fetch that particular user friends.
router.get("/friends/:userId", async (req, res) => {
try {
const user = await User.findById({userId:req.params.userId});
const friends = await Promise.all(
user.following.map((friendId) => {
return User.findById(friendId);
})
);
let friendList = [];
friends.map((friend) => {
const { _id, username, profilePicture } = friend;
friendList.push({ _id, username, profilePicture });
});
res.status(200).json(friendList)
console.log(friendList)
} catch (err) {
res.status(500).json(err);
console.log(err)
}
});
But I get this error
CastError: Cast to ObjectId failed for value "{ userId: '61543261597a97bfdf670f0b' }" (type Object) at path "_id" for model "User"
friends data in my when I Log it out to see...
[
undefined,
{
_id: new ObjectId("6154346027ecc696433f5b86"),
username: 'Hemmyhtec',
email: '[email protected]',
password: '$2b$10$wVkZGu4PxlmW3geXfeBwHOxGeK6v7wyjyV7xeLzBNWQSeg5LtA.eW',
profilePicture: 'logo3.jpg',
coverPicture: '',
followers: [ '', '61543261597a97bfdf670f0b' ],
following: [ '' ],
isAdmin: false,
createdAt: 2021-09-29T09:39:44.199Z,
updatedAt: 2021-10-02T20:25:38.569Z,
__v: 0
}
]
CodePudding user response:
Replace this
user.following.map((friendId) => {
return User.findById(friendId);
})
with
user.following.map((friendId) => {
if(!friendId) return
return User.findById(friendId);
})
CodePudding user response:
When you use findById()
, your should pass only the value of the _id
and not the object userId
with that value. Change your code like this:
const user = await User.findById(req.params.userId);