Поиск элемента внутри массива говорит мне, что параметр должен быть объектом - PullRequest
0 голосов
/ 11 января 2019

Когда пользователь нажимает кнопку, я пытаюсь увидеть, существует ли этот пользователь в массиве, прежде чем добавить его, в противном случае я не хочу добавлять его в существующий массив.

Вот схема мангуста

const Schema = mongoose.Schema;

const productSchema = new Schema({
    title: {
        type: String,
        required: true
    },
    category: {
        type: String,
        required: true
    },
    image: {
        type: String,
        required: true
    },
    description: {
        type: String,
        required: true
    },
    userId: {
        type: Schema.Types.ObjectId,
        ref: 'User',
        required: true
    },
    createdAt: {
        type: Date,
        default: Date.now
    },
    requests: [
        {
             userId: {type: Schema.Types.ObjectId, required: true},
             firstName: {type: String},

        }
    ],
});

module.exports = mongoose.model('Product', productSchema);

и запрос

exports.postRequest = (req, res, next) => {
    const productId = req.body.productId;
    const userId = req.body.userId;
    const firstName = req.body.firstName;
    Product.find({requests: userId})
    .then(product => {
      console.log(product);
    })
    .catch(err => {
      console.log(err);
    });
  };

Я подумал, что это все, что нужно, чтобы посмотреть, существует ли значение внутри массива, но я получаю ошибку:

ObjectParameterError: параметр "obj" для Document () должен быть объектом

1 Ответ

0 голосов
/ 11 января 2019

Это показывает ошибку, потому что запросы - это массив объектов. И вы запрашиваете, чтобы найти userId в массиве. Вы должны указать mongo, с каким свойством сопоставлять в массиве объектов.

изменить это так

Product.find( { "requests.userId" : userId })
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...