2015-01-01 4 views
0

У меня возникли проблемы при работе с мангуста.Mongoose не обновит документ

Я написал следующий фрагмент кода:

if (!usr.settings) usr.settings = {}; 
async.forEach(Object.keys(params), function (item, nextitem){ 
    usr.settings[item] = params[item]; 
    nextitem(); 
}, function (err) { 
    if (err) return callback(err); 
    usr.save(function(err) { 
     if (err) return callback(err); 
     return callback(); 
    }); 
}); 

Когда я первый его использовать, он работает просто отлично, он создает все элементы документа отлично, но когда я использую его на 2-й раз (позволяет скажем, я хочу обновить эти элементы), это не изменяет их значения и не дает мне никакой ошибки. Данные остаются одинаковыми.

Я попытался отладить его.

if (!usr.settings) usr.settings = {}; 
async.forEach(Object.keys(params), function (item, nextitem){ 
    usr.settings[item] = params[item]; 
    nextitem(); 
}, function (err) { 
    if (err) return callback(err); 
    usr.save(function(err) { 
     console.log(usr); <------------------- [At this point it shows the updated data but for some reason it doesnt save it to the db] 
     if (err) return callback(err); 
     return callback(); 
    }); 
}); 

Любая идея, почему это может произойти? Спасибо.

ответ

0

После того, как он вошел в него, нашел решение.

позволяет сказать, что вы с помощью следующей схемы:.

user_schema = { 
    settings = Object 
} 

вы не сможете установить настройки, поэтому следующий код:

usr.settings.something = 123; 
usr.save(function(err) { 
    if (err) return callback(err); 
    return callback(); 
}); 

не будет делать ничего, и все равно не будет приводят к ошибке. Если вы хотите, чтобы исправить эту проблему, применить это исправление к схеме:

user_schema = { 
    settings = { 
     something : Number 
     something_else: Object 
    } 
} 

теперь вы сможете установить something со значением :)

Я хотел было бы полезно для кого

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