Код должен проходить валидацию JSCS.
... шел пятый час, а Сергей все никак не мог сладить с этими монго-запросами!
Как же это не просто запомнить что написать в начале: имя поля или оператор $lt
?
В это время с кухни донёсся отчётливый сигнал зуммера мультиварки, предвещающий вкусный обед.
«А что, не плохая идея!» – подумал Сергей – «Мультиварка помогла мне решить проблему с приготовлением еды, почему бы не применить этот приницип к подготовке запросов к Mongodb».
Мультиварку Сергей решил написать на нативном драйвере, чтобы ничего личшнего! Следуя этому принципу он решил ограничить её возможности операциями: подключение к монге, выбор коллекции, формирование запроса и получение результата.
Например:
const multivarka = require('./multivarka');
multivarka
// Указываем url для подключения
.server('mongodb://localhost/urfu-2015')
// и коллекцию
.collection('students')
// Выбираем только те записи, в которых поле `group` равно значению «ПИ-301».
.where('group').equal('ПИ-301')
// После подготовки, делаем запрос
.find(function (err, data) {
if (!err) {
console.log(data);
}
});
В мультиварке запросов нам хочется видеть следующие функции:
.where('grade').lessThan(5)
- запросить всех студентов, которые не очень постарались (оценка меньше 5).where('grade').greatThan(4)
- запросить всех отличников (оценка больше 4).where('group').include(['ПИ-301', 'ПИ-302', 'КБ-301'])
- запросить всех студентов из перечисленных групп.where('group').not().equal('ПИ-301')
- добавляет отрицание к следующему за этим оператором значению
Будет нереально круто, если вы кроме кнопки find
в мультиварке реализуете:
.remove(cb)
- кнопка, которая удаляет студентов из коллекции.set('group', 'ПИ-302').update(cb)
- кнопка, которая обновляет данные студента- И кнопка, которая добавляет студента:
const petr = {
name: 'Пётр',
group: 'ПИ-302',
grade: 5
}
multivarka
// Указываем url для подключения
.server('mongodb://localhost/urfu-2015')
// и коллекцию
.collection('students')
// После подготовки, делаем запрос
.insert(petr, function (err, result) {
if (!err) {
console.log(result);
}
});