Mongoose / MongoDB - сохранение записи для перезаписи текущих данных: - PullRequest
2 голосов
/ 09 декабря 2011

Итак, у меня есть объект в БД, который в основном состоит из сообщений блога, там есть массив ObjectID, которые ссылаются на коллекцию категорий.

Итак,

Posts = {
   title: String,
   Content: String,
   Categories: [{
       type: ObjectID,
       ref: 'Categories'
   }]

Я могу создатьс сообщениями все в порядке, проблема возникает, когда я пытаюсь обновить их:

post.title = 'hi';
post.content = 'content';
post.categories = ['44523452525','4e1342413421342'];

post.save(function(){});

По какой-то причине он ДОБАВИТ эти 2 категории вместо того, чтобы стирать массив категорий и вставлять их.

Как мне получить их, чтобы удалить их и вставить новые?

1 Ответ

5 голосов
/ 17 декабря 2011

Я пытался воспроизвести это поведение, но не смог - вот пример кода, который я запустил:

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

mongoose.connect('mongodb://localhost/testjs');

PostSchema = new Schema({
  title:String,
  content:String,
  cats:[]
});
var Post = mongoose.model('Post', PostSchema);

var mypost = new Post()
mypost.title = "x"
mypost.content = "y"
mypost.cats = ['a','b','c']
mypost.save(
  function(err){
    mypost.cats = ['d','e']
    mypost.save()
  }
);

После второго вызова save () массив содержит только то, что было установлено ("д», "е").Можете ли вы попробовать и посмотреть, если вы получите тот же результат?Может быть, это связано с версией мангусты, или что-то в этом роде.

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