Задать вопрос
@Skrolea

Как составить запрос в Mongo?

Почему то не вижу своего предыдущего вопроса, хотел добавить туда.
Но
Имею такую структуру схемы
var ArticleSchema = new Schema({
      created: {
         type: Date,
         default: Date.now
                },
       title: {
          ru : {
             type: String,
             default: '',
             trim: true,
             required: 'Заголовок должен быть заполнен'
               },
          en : {
             type: String,
             default: '',
             trim: true,
             required: 'Title cannot be blank'
                }
          },
        content: {
          ru : {
             type: String,
             default: '',
             trim: true,
             required: 'Текст должен быть заполнен'
              },
          en : {
            type: String,
            default: '',
            trim: true,
            required: 'Title cannot be blank'
               }
             },
          user: {
            type: Schema.ObjectId,
            ref: 'User'
                }
 });

И хочу получатьtitle иcontent в зависимости от существующей локали. Её я получаю с помощью метода getLocale() от i18n. Как можно сделать запрос в контроллере
exports.list = function (req, res) {
   var locale = i18n.getLocale()// выдаёт правильно - en или ru
   var query = // Вот что сюда воткнуть???
     Article.find(query).sort('-   created').populate('user', 'displayName').exec(function (err, articles) {

    if (err) {
    return res.status(400).send({
      message: errorHandler.getErrorMessage(err)
      });

  } else {
     res.json(articles);
  }
 });
};


чтобы получать title и content только на нужном языке?
  • Вопрос задан
  • 553 просмотра
Подписаться 2 Оценить 3 комментария
Помогут разобраться в теме Все курсы
  • Яндекс Практикум
    Фронтенд-разработчик
    10 месяцев
    Далее
  • Skillfactory
    Профессия Веб-разработчик
    12 месяцев
    Далее
  • Нетология
    Fullstack-разработчик на Python + нейросети
    20 месяцев
    Далее
Пригласить эксперта
Ответы на вопрос 1
bingo347
@bingo347 Куратор тега JavaScript
Crazy on performance...
У find 1й параметр отвечает за условия, возвращаемые поля определяет 2й параметр, но при его наличии будут отсутствовать все остальные поля документа, можно конечно их перечислить, но это придется менять при изменении структуры документа, пример:
var locale = i18n.getLocale();
 Article.find({}, {
    ['title.' + locale]: 1,
    ['content.' + locale]: 1
})

Второй вариант - это преобразовать результат от базы так как Вам надо, пример:
var locale = i18n.getLocale();
Article.find().sort('-   created').populate('user', 'displayName').exec(function (err, articles) {
  if (err) {
    return res.status(400).send({
      message: errorHandler.getErrorMessage(err)
    });
  } else {
     articles.forEach(article => {
       article.title = article.title[locale];
       article.content = article.content[locale];
     });
     res.json(articles);
  }
});
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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