Mongoose не обновляет встроенный документ - PullRequest
6 голосов
/ 28 марта 2012

У меня возникла проблема при попытке обновить встроенный документ в mongodb. Я пробовал два метода, но ни один из них не работает, и я искал повсюду причины, по которым он не обновляется. В любом случае, моя схема выглядит следующим образом (я могу заметить, что внедренный документ, который я пытаюсь обновить, относится к смешанному типу).

var UserModel = new mongoose.Schema({
    account: String,
    salt: String,
    password: String,
    highlight_words: String,
    networks: {},
    ip: String,
    ident: String,
    is_connected: Boolean,
    account_type: String
});

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

self.userModel.update({account: key}, {networks: self.client_data[key]['networks']}, function(err) {});

И (обратите внимание, что я попытался добавить обратный вызов для save (), и он выполняется без ошибок)

self.userModel.findOne({account: key}, function(err, doc) {
    doc.networks = self.client_data[key]['networks'];
    doc.markModified('networks').save();
});

Любая помощь будет оценена! Спасибо!

Edit:

Проблема заключалась в том, что объект был таким {'some.thing': {more: 'stuff'}}, очевидно, ему не нравился объект. что понятно!

Ответы [ 2 ]

11 голосов
/ 24 апреля 2012

Попробуйте doc.markModified('networks');. Похоже, networks это тип без схемы. Mongoose не может автоматически определять изменения типов без схемы.

2 голосов
/ 11 октября 2012

Вам нужно полностью определить свою схему, чтобы это работало.Например:

network {type: "String"}

...