2015-01-23 3 views
1

У меня есть схема Session:Как вручную заполнить?

Session: { 
    _user: { type: mongoose.Schema.ObjectId, ref: 'User' } 
} 

У меня есть функция, которая создает сеанс и мне нужно session._user заселяться. Моя функция принимает пользователя как первый параметр, поэтому я бы хотел сделать session._user = user;, но это не сработает. Вот упрощенный фрагмент:

function createSession(user, callback) { 
    return Session.create({ 
    _user: user.id 
    }, function(err, session) { 
    // session._user = user; does not work 
    // return callback(null, session); 

    // Workaround 
    return session.populate('_user', function(err, session) { 
     return callback(null, session); 
    }); 
}; 

ответ

0

Если вы хотите самостоятельно заполнить Mongoose экземпляр модели, как session, вы должны сначала преобразовать его в обычный объект JS с помощью вызова toObject() или схема проверки типов предотвратит его рабочий:

function createSession(user, callback) { 
    return Session.create({ 
    _user: user.id 
    }, function(err, session) { 
    session = session.toObject(); 
    session._user = user; 
    return callback(null, session); 
}; 
+0

Мне нужно использовать экземпляр экземпляра 'session' после обратного вызова, поэтому я не хочу преобразовывать объект в объект JS плана. – mathieug

+0

Не могли бы вы просто сохранить простой объект в новую переменную, чтобы «session» все еще содержал экземпляр модели? – JohnnyHK

+0

Мне нужно вернуть экземпляр экземпляра 'session' в обратном вызове без вызова' session.populate ('_ user') '. – mathieug

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