Задать вопрос
jamesgoodwin
@jamesgoodwin
Молодой разработчик

Как можно обновить populated поле при помощи Mongoose?

Добрый день! Вопрос будет основываться на достаточно простом примере. Есть вот такие модели:

var mongoose = require('mongoose')
, Schema = mongoose.Schema

var storySchema = Schema({
title : String,
author : { type: Schema.Types.ObjectId, ref: 'Author' }
});

var authorSchema = Schema({
name : String,
age: Number
});

var Story = mongoose.model('Story', storySchema);
var Author = mongoose.model('Author', authorSchema);


То есть у нас есть истории и авторы(модели просто для примера). Теперь пишется Create, у которого нет никаких особых проблем для выполнения:
var newStory = new Story({
	title: story_title,
	author: author_id
  });

  newStory.save(function(err){
  	if(err) throw err;
  	...	
  });


Мой вопрос: как можно обновить этот документ?

Я использую следующий способ, но как я понимаю, он не верен ввиду того, что от меня ожидается ObjectID:
Story.findOneAndUpdate({ id:story_id }, { title: story_title, author: author_id }, function(err, repertoire){
  if(err) throw err;
  ...

});

Пробовал конвертацию вида mongoose.Types.ObjectId(author_id), результат - документ не обновляется. Может дело не в этом? Буду благодарен за вашу помощь.
  • Вопрос задан
  • 352 просмотра
Подписаться 1 Оценить Комментировать
Решения вопроса 1
@emp1re
findByIdAndUpdate(id, {...} (err)=>{
 if(err) return callback(err) // some error haendler
} )
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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