Когда вы передаете строку разметки в HTML5 обещает позволить вам использовать Однако для современных браузеров вы должны использовать HTML-код X (должным образом исполненный как *: ну, есть DOM Level 3 LS parseWithContext , но поддержка браузера очень плохая. Изменить для добавления: однако, пока вы не можете вводить разметку в SVGElement, вы можете добавить новый SVGElement в HTMLElement с помощью **: Я ненавижу то, как авторы HTML5, похоже, боятся XML и намерены использовать функции, основанные на XML, в жестоком беспорядке, который это HTML. XHTML решил эти проблемы много лет назад. Firebase не поддерживает запросы с динамическим параметром, например «два часа назад». Он может выполнять запрос для определенного значения, например «после 14 августа 2015 года, 7:27:32 утра». Это означает, что вы можете запустить фрагмент код периодически, чтобы очистить элементы, которые старше 2 часов в это время : Как вы заметите, я использую Обновление: если вы хотите запустить этот код в облачных функциях для Firebase: Эта функция запускается всякий раз, когда данные записываются в Этот код теперь также доступный в Вы можете посмотреть Планирование функций Firebase с помощью заданий Cron . Эта ссылка показывает вам, как планировать облачную функцию Firebase для работы с фиксированной скоростью. В запланированной функции Firebase вы можете использовать другие ответы в этом потоке для запроса старых данных и удаления. В последней версии Firebase API ref () изменен на ref $
, она анализируется как HTML, используя свойство innerHTML
браузера на ). innerHTML
не может анализировать SVG или другой не-HTML-контент, и даже если бы он не мог сказать, что
должен был находиться в пространстве имен SVG. innerHTML
] недоступно в SVGElement - это свойство только HTMLElement. В настоящее время нет свойства innerSVG
или другого способа (*) для анализа содержимого в SVGElement. По этой причине вам следует использовать методы типа DOM. jQuery не дает вам легкий доступ к методам, поддерживающим имена, необходимые для создания элементов SVG. Действительно, jQuery не предназначен для использования с SVG вообще, и многие операции могут завершиться неудачно. без
xmlns
внутри обычного HTML (text/html
) документа в будущее. Но это всего лишь взлом для анализатора (**), содержимое SVG по-прежнему будет SVGElements в пространстве имен SVG, а не HTMLElements, поэтому вы не сможете использовать innerHTML
, даже если они выглядят как часть HTML-документа. application/xhtml+xml
; сохранить с расширением .xhtml для локального тестирования ), чтобы заставить SVG работать вообще. (В любом случае это имеет смысл: SVG - это стандарт, основанный на стандартах XML). Это означает, что вам придется избегать символов <
внутри вашего блока сценариев (или заключить в раздел CDATA) и включить XHTML xmlns
. Пример:
innerHTML
, а затем перенести его на желаемую цель. Скорее всего, это будет немного медленнее:
4 ответа
var ref = firebase.database().ref('/path/to/items/');
var now = Date.now();
var cutoff = now - 2 * 60 * 60 * 1000;
var old = ref.orderByChild('timestamp').endAt(cutoff).limitToLast(1);
var listener = old.on('child_added', function(snapshot) {
snapshot.ref.remove();
});
child_added
вместо value
и I limitToLast(1)
. Когда я удаляю каждого дочернего объекта, Firebase запускает child_added
для нового «последнего» элемента до тех пор, пока после точки отсечения больше нет элементов. exports.deleteOldItems = functions.database.ref('/path/to/items/{pushId}')
.onWrite((change, context) => {
var ref = change.after.ref.parent; // reference to the items
var now = Date.now();
var cutoff = now - 2 * 60 * 60 * 1000;
var oldItemsQuery = ref.orderByChild('timestamp').endAt(cutoff);
return oldItemsQuery.once('value', function(snapshot) {
// create a map with all children that need to be removed
var updates = {};
snapshot.forEach(function(child) {
updates[child.key] = null
});
// execute all updates in one go and return the result to end the function
return ref.update(updates);
});
});
/path/to/items
, поэтому дочерние узлы будут удаляться только при изменении данных. functions-samples
репо .
var ref = new Firebase('https://yours.firebaseio.com/path/to/items/');
var now = Date.now();
var cutoff = now - 2 * 60 * 60 * 1000;
var old = ref.orderByChild('timestamp').endAt(cutoff).limitToLast(1);
var listener = old.on('child_added', function(snapshot) {
snapshot.ref.remove();
});
Похожие вопросы:
snapshot.ref().remove()
в Swift с SDK 3.x будетsnapshot.ref.removeValue()
. См. Руководство guide и reference . – Frank van Puffelen 16 September 2016 в 16:51