2016-02-22 2 views
0

У меня есть следующие две схемы:Как заполнить массив в схеме мангуста после создания?

var UserSchema = new Schema({ 
    provider: String, 
    username: String, 
    ... 
    categories: [{type: Schema.Types.ObjectId, ref: 'Category'}], 
    ... 
}); 

export default mongoose.model('User', UserSchema); 

и

var CategorySchema = new mongoose.Schema({ 
    name: String, 
    description: String, 
    adultOnly: { type: Boolean, default: false }, 
    ... 
}); 

export default mongoose.model('Category', CategorySchema); 

Теперь всякий раз, когда я создать нового пользователя, я хочу автозаполнения его категории со всеми существующими категориями. Зависит от своего возраста, он не может быть назначен для категорий adultOnly.

Как это сделать? Я пробовал это так:

var newUser = new User(req.body); 
    ... 
    newUser.saveAsync() 
    .spread(function(user) { 


    Category.findAsync({}, '_id', function(err, categories) { 
    if (!err){ 

     var size = categories.length; 

     for (var i = 0; i < size; i++) { 
     user.categories.push(categories[i]._id); 
     } 

    } else {throw err;} 
    }); 

    ... 

}) 
.catch(validationError(res)); 

но это не работает.

Надеюсь, вы можете мне помочь.

ответ

0

Смотрите, если это помогает:

var newUser = new User(req.body); 
... 
newUser.saveAsync() 
.spread(function(user) { 
    Category.find({}, {'_id': 1}, function(err, categories) { 
    if (!err){ 
     /*var size = categories.length; 
     for (var i = 0; i < size; i++) { 
     user.categories.push(categories[i]._id); 
     }*/ 
     user.categories = []; 
     user.categories = categories; 
    } else {throw err;} 
    }); 
... 
}) 
.catch(validationError(res));