Я внедрил систему, в которой зарегистрированный пользователь может иметь друзей и следить за теми, с кем он / она не хочет дружить. Исходя из этого, я реализовал систему для получения сообщений от этих пользователей. Теперь я хотел бы получить посты от пользователя loggedIn, а также от других постов (от друзей и пользователей, за которыми следует loggedIn - пользователь).
Для этого я должен добавить req.user._id
это идентификатор пользователя loggedIn.
following
и friends
- это массивы объектов, содержащих идентификаторы пользователей.
На данный момент единственный способ сделать выборку как из следующих, так и из сообщений друзей, комментируя строки, в которых я пытаюсь сделать нажатия?
Теперь единственный способ получить сообщения пользователя loggedIn - это получить их только по одному из следующих сообщений пользователя. или сообщения пользователей друзей ... Я хочу получить их вместе с обоими массивами.
Я объяснил себе? Заранее спасибо.
const { following, friends } = req.user;
// Include currentLoggedIn user posts
following.push(req.user._id);
friends.push(req.user._id);
// Fetch posts by both users I follow and users I'm friends with
const posts = await Post.find({
$or: [{ user: { $in: [following, friends] } }]
})
.populate({ path: 'user', select: 'username avatar bio' })
.sort('-date')
.skip(startIndex)
.limit(limit);
Надеюсь, я смогу объяснить. Вот код, который он мне сейчас выдает:
{
"status": "error",
"error": {
"stringValue": "\"[ 5e0d1b9315a8f23df855e4c3, 5e0925629648903308163aeb ]\"",
"kind": "ObjectId",
"value": [
"5e0d1b9315a8f23df855e4c3",
"5e0925629648903308163aeb"
],
"path": "user",
"reason": {},
"message": "Cast to ObjectId failed for value \"[ 5e0d1b9315a8f23df855e4c3, 5e0925629648903308163aeb ]\" at path \"user\" for model \"Post\"",
"name": "CastError",
"statusCode": 500,
"status": "error"
},
"message": "Cast to ObjectId failed for value \"[ 5e0d1b9315a8f23df855e4c3, 5e0925629648903308163aeb ]\" at path \"user\" for model \"Post\"",
"stack": "CastError: Cast to ObjectId failed for value \"[ 5e0d1b9315a8f23df855e4c3, 5e0925629648903308163aeb ]\" at path \"user\" for model \"Post\"\n at new CastError (C:\\xampp\\htdocs\\myporn\\node_modules\\mongoose\\lib\\error\\cast.js:39:11)\n at ObjectId.cast (C:\\xampp\\htdocs\\myporn\\node_modules\\mongoose\\lib\\schema\\objectid.js:246:11)\n at ObjectId.SchemaType.applySetters (C:\\xampp\\htdocs\\myporn\\node_modules\\mongoose\\lib\\schematype.js:975:12)\n at ObjectId.SchemaType._castForQuery (C:\\xampp\\htdocs\\myporn\\node_modules\\mongoose\\lib\\schematype.js:1389:15)\n at ObjectId.SchemaType.castForQuery (C:\\xampp\\htdocs\\myporn\\node_modules\\mongoose\\lib\\schematype.js:1379:15)\n at C:\\xampp\\htdocs\\myporn\\node_modules\\mongoose\\lib\\schematype.js:1328:18\n at Array.map (<anonymous>)\n at ObjectId.handle$in (C:\\xampp\\htdocs\\myporn\\node_modules\\mongoose\\lib\\schematype.js:1324:14)\n at ObjectId.SchemaType.castForQuery (C:\\xampp\\htdocs\\myporn\\node_modules\\mongoose\\lib\\schematype.js:1376:20)\n at ObjectId.SchemaType.castForQueryWrapper (C:\\xampp\\htdocs\\myporn\\node_modules\\mongoose\\lib\\schematype.js:1353:17)\n at cast (C:\\xampp\\htdocs\\myporn\\node_modules\\mongoose\\lib\\cast.js:296:39)\n at cast (C:\\xampp\\htdocs\\myporn\\node_modules\\mongoose\\lib\\cast.js:58:18)\n at model.Query.Query.cast (C:\\xampp\\htdocs\\myporn\\node_modules\\mongoose\\lib\\query.js:4683:12)\n at model.Query.Query._castConditions (C:\\xampp\\htdocs\\myporn\\node_modules\\mongoose\\lib\\query.js:1861:10)\n at model.Query.<anonymous> (C:\\xampp\\htdocs\\myporn\\node_modules\\mongoose\\lib\\query.js:1888:8)\n at model.Query._wrappedThunk [as _find] (C:\\xampp\\htdocs\\myporn\\node_modules\\mongoose\\lib\\helpers\\query\\wrapThunk.js:16:8)\n at C:\\xampp\\htdocs\\myporn\\node_modules\\kareem\\index.js:278:20\n at _next (C:\\xampp\\htdocs\\myporn\\node_modules\\kareem\\index.js:102:16)\n at process.nextTick (C:\\xampp\\htdocs\\myporn\\node_modules\\kareem\\index.js:507:38)\n at process._tickCallback (internal/process/next_tick.js:61:11)"
}
Это означает (насколько я знаю), что req.user._id
не может быть преобразован в тип данных MongoDB ObjectId
, но затем я попытался запросить mongodb в моем файл, чтобы можно было использовать ObjectId, но он продолжает выдавать мне ту же ошибку.
Спасибо!.