$ match не работает mongodb [duplicate]

Существует много причин, но, возможно, наиболее важным является то, что эти функции поощряют небезопасные методы программирования, поскольку они не поддерживают подготовленные заявления. Подготовленные утверждения помогают предотвратить атаки SQL-инъекций.

При использовании функций mysql_* вы должны помнить, чтобы запускать параметры, заданные пользователем, через mysql_real_escape_string(). Если вы забудете только в одном месте или если вам удастся избежать только части входа, ваша база данных может подвергаться атаке.

Использование подготовленных операторов в PDO или mysqli сделает так, чтобы эти типы ошибок программирования сложнее сделать.

5
задан Tyler Shaddix 1 May 2013 в 05:44
поделиться

3 ответа

Оказывается, бросание ObjectId, похоже, было проблемой. Он был запущен с использованием идентификатора объекта типа схемы mongoose.Schema.Types.ObjectId, когда он должен был быть просто чистым ObjectId mongoose.Types.ObjectId.

43
ответ дан Tyler Shaddix 24 August 2018 в 16:53
поделиться
var aggregate  = [
{
                $match: {
                    'lenderId': new mongoose.Types.ObjectId(req.user),
                    '_disbursed': true
                }
            },
            {
                $unwind:'$emi'
            },
            {
                $match: {
                    'emi._settled': false,
                }
            }
];
1
ответ дан Ankit Kumar Rajpoot 24 August 2018 в 16:53
поделиться

При использовании метода find или findById запрос может быть только:

var query = {
    $or: [
        {'_sender':req.body._id},
        {'_recipient':req.body._id}
    ]
};

При использовании агрегата для запроса нужен листинг

var mongoose = require('mongoose');
var query = {
    $or: [
        {'_sender':new mongoose.Types.ObjectId(decoded._id)},
        {'_recipient':new mongoose.Types.ObjectId(decoded._id)}
    ]
};
7
ответ дан Fabius 24 August 2018 в 16:53
поделиться
Другие вопросы по тегам:

Похожие вопросы: