2017-02-07 2 views
0

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

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

Если они этого хотят, то uniOnly установлен на true на модель сообщения.

Вот часть PostSchema:

const PostSchema = new Schema({ 
    university: { 
    type: String, 
    required: true 
    }, 
    uniOnly: { 
    type: Boolean, 
    required: true 
    } 
}); 

В нижеприведенном buildQuery университет, uni пользователя (хранится в их профиле документа) с просьбой фид передается в качестве параметра.

Так что я пытаюсь сделать, это проверить, что если uniOnly установлен в true на должность и uni приходит в это не то же самое, как university на пост, то это не должно быть видно в корме.

Как я могу это сделать? Должен ли я использовать $where? Или, если заявление некоторых как ?:

const buildQuery = (criteria) => { 
    const { uni } = criteria; 
    const query = {}; 

    // Should I be using $where? 
    query.uniOnly = { $where: } 

    return query; 
}; 

buildQuery довольно большой, поэтому я срубил его, что имеет отношение.

Спасибо

ответ

1

Если вы хотите запросить должности, где uniOnly = false ИЛИ university = criteria.uni, то вы можете использовать $or объединить термины логически:

const buildQuery = (criteria) => { 
    const query = { $or: [ {uniOnly: false}, {university: criteria.uni} ] }; 
    return query; 
}; 
+0

Если это 'uniOnly = false', то сообщение может быть запрошено только IF 'university = criteria.uni'. Это делает то же самое прямо? – bloppit

+1

@bloppit Он получает документы 'uniOnly = false', а также документы, в которых' university = criteria.uni' (и подразумевается 'uniOnly = true', который является единственным другим вариантом для' uniOnly'). – JohnnyHK

+0

удивительный, спасибо! – bloppit

Смежные вопросы