Mongo User.find return "Ошибка: переданный аргумент должен быть одной строкой из 12 байтов или строкой из 24 шестнадцатеричных символов" - PullRequest
0 голосов
/ 14 октября 2018

Мой маршрутизатор Express выглядит так:

router.get('/user/events', verifyToken, (req, res) => {
    User.find({
        _id: req.userId,
        'signedToEvents.isActive': true
    }, (err, suc) => {
        if (err) {
            console.log(err)
        }
        console.log(suc);
        res.status(200).send(suc)
    })
})

Мне кажется, это правильно, но выдает ошибку.Пожалуйста, объясните мне, что я делаю не так.UserId является идентификатором пользователя Mongo.

Схема Mongoose:

const mongoose = require('mongoose');
const Schema = mongoose.Schema;


const SignedToEvents = new Schema({
    _id : Schema.Types.ObjectId,
    eventSignedDate: {type : Date, default : Date.now()},
    isActive : Boolean
})
SignedToEvents.set('toObject', { getters: true });
SignedToEvents.set('toJSON', { getters: true });

const UserSchema = new Schema({
    email: String,
    password : String,
    age : Number,
    sex : String,
    createdAt: { type: Date, default: Date.now },
    signedToEvents : [SignedToEvents]
})

UserSchema.set('toObject', { getters: true });
UserSchema.set('toJSON', { getters: true });

module.exports = mongoose.model('user', UserSchema, 'users');

Вызов в API (из углового клиента)

  getUsersEvents(){
    //returns the events for a particular user
    return this.http.get<any>(this.apiroot + 'user/events');
  }

Ответы [ 2 ]

0 голосов
/ 14 октября 2018

Итак, проблема была в том, что у меня был другой экспресс-маршрутизатор, похожий на тот, который по объему

router.get('/user/:challengeId'

То же, что и

router.get('/user/events'

Спасибо за вашу помощь в любом случае.

0 голосов
/ 14 октября 2018

Вы можете передать идентификатор пользователя как минимум тремя способами:

  • QueryString
  • Параметр маршрута
  • Cookie

Если выпри использовании строки запроса значение будет доступно через: request.query.userId.

По маршруту параметр , это: request.params.userId

Через cookie : request.cookies.userId

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...