Как выполнить upsert в Mongoose в поисках встроенного документа? - PullRequest
3 голосов
/ 22 сентября 2011
SocialProfileSchema = new mongoose.Schema
  source:
    type: String
    enum: ['twitter','facebook']
    lowercase: true
  user_id: String
  profile_url: String
  primary:
    type: Boolean
    default: true
  added_on:
    type: String
    default: Math.round(new Date().getTime()/1000.0)

UserProfileSchema  = new mongoose.Schema
    socialProfiles: [SocialProfileSchema]
    added_on:
      type: String
      default: Math.round(new Date().getTime()/1000.0)

Это моя схема. Проверить наличие определенного user_id в пределах SocialProfileSchema и затем выполнить упор выглядит как гигантская задача. Это вообще возможно?

Ответы [ 2 ]

2 голосов
/ 24 октября 2011

Вот пример того, как вы можете сделать обновление, если оно существует, в противном случае вставьте:

Аргументы для обновления: findQuery, data, queryOptions, onComplete

var update = { data: "1", expires: 300 };
that.update({ session_id: sid }, { $set: update }, { upsert: true }, function(err, data) {
  callback.apply(this, arguments);
});
0 голосов
/ 23 сентября 2011

Как насчет dbref?Это позволит вам получить доступ к SocialProfiles напрямую, вместо того, чтобы перебирать кучу встроенных объектов

http://mongoosejs.com/docs/populate.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...