@Skrolea

Как сделать запрос в Mongo?

Добрый день. Как вытащить данные с определённой 'locale'?
Имею следующую структуру
var ArticleSchema = new Schema({
  created: {
    type: Date,
    default: Date.now
  },
  title: {
      en : {
          type: String,
          default: '',
          trim: true,
          required: 'Title cannot be blank'
            },
      ru : {
          type: String,
          default: '',
          trim: true,
          required: 'Title cannot be blank'
            },
      fr : {
          type: String,
          default: '',
          trim: true,
          required: 'Title cannot be blank'
          },
      es : {
          type: String,
          default: '',
          trim: true,
          required: 'Title cannot be blank'
          },
      it : {
          type: String,
          default: '',
          trim: true,
          required: 'Title cannot be blank'
          }

  },
...

Получаю существующую локаль с помощью
var locale = i18n.getLocale();//get locale  en
  console.log('locale',locale); //выдаёт en

И как сделать запрос?
var query = {
    locale:{ $exists : true, $ne : null }
  };
  Article.find(query).sort('-created').populate('user', 'displayName').exec(function (err, articles) {
      if (err) {
        return res.status(400).send({
          message: errorHandler.getErrorMessage(err)
        });
      } else {
        console.log('articles',articles);
        res.json(articles);
      }
    });

Что вот воткнуть в query?
  • Вопрос задан
  • 441 просмотр
Пригласить эксперта
Ответы на вопрос 1
AMar4enko
@AMar4enko
Если я правильно вас понял, вы хотите нечто вроде AS в SQL.
Псевдокод "SELECT title.en as title FROM articles";
Но в монге у вас такого не получится. Как вариант - ограничивать populate след. образом
.populate('title.' + locale), после чего в хуках модели сделать обработку этих полей вроде
this.titleLocalized = this.title[Object.keys(this.title)[0]];

Инфу по хукам ищите в документации к Mongoose (это же он?)
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы