Я решил это своей собственной функцией. Если вы хотите обновить указанное поле в документе, вам необходимо четко указать его.
Пример:
{
_id : ...,
some_key: {
param1 : "val1",
param2 : "val2",
param3 : "val3"
}
}
Если вы хотите обновить только param2, это неправильно:
db.collection.update( { _id:...} , { $set: { some_key : new_info } } //WRONG
Вы должны использовать:
db.collection.update( { _id:...} , { $set: { some_key.param2 : new_info } }
Итак, я написал какую-то функцию:
function _update($id, $data, $options=array()){
$temp = array();
foreach($data as $key => $value)
{
$temp["some_key.".$key] = $value;
}
$collection->update(
array('_id' => $id),
array('$set' => $temp)
);
}
_update('1', array('param2' => 'some data'));
Это ожидаемое поведение, вы можете запретить отправку кнопки enter
для формы, подобной этой:
document.querySelector('form').addEventListener('submit', function (e) {
e.preventDefault();
}, false);
или для каждого элемента ввода:
function onLoad() {
var options = { maxResults: 8 };
initAutosuggestControl(options, "searchBox", "searchBoxContainer");
initAutosuggestControl(options, "searchBoxAlt", "searchBoxContainerAlt");
disableInputSubmit(document.querySelector('#searchBox'));
disableInputSubmit(document.querySelector('#searchBoxAlt'));
}
где [ 116]
function disableInputSubmit(element) {
element.addEventListener('keypress', function(e){
if (e.which === 13) // Enter key = keycode 13
{
e.preventDefault();
}
},false);
}