Как установить значение толчка в firebase для инкрементального типа, как 01,02,03 вместо случайного значения [duplicate]

Вы можете использовать эти методы расширения: (Сохранить как PartialWithScript.cs)

namespace System.Web.Mvc.Html
{
    public static class PartialWithScript
    {
        public static void RenderPartialWithScript(this HtmlHelper htmlHelper, string partialViewName)
        {
            if (htmlHelper.ViewBag.ScriptPartials == null)
            {
                htmlHelper.ViewBag.ScriptPartials = new List<string>();
            }

            if (!htmlHelper.ViewBag.ScriptPartials.Contains(partialViewName))
            {
                htmlHelper.ViewBag.ScriptPartials.Add(partialViewName);
            }

            htmlHelper.ViewBag.ScriptPartialHtml = true;
            htmlHelper.RenderPartial(partialViewName);
        }

        public static void RenderPartialScripts(this HtmlHelper htmlHelper)
        {
            if (htmlHelper.ViewBag.ScriptPartials != null)
            {
                htmlHelper.ViewBag.ScriptPartialHtml = false;
                foreach (string partial in htmlHelper.ViewBag.ScriptPartials)
                {
                    htmlHelper.RenderPartial(partial);
                }
            }
        }
    }
}

Использовать так:

Пример частичного: (_MyPartial.cshtml) Поместите html в if и js в else.

@if (ViewBag.ScriptPartialHtml ?? true)
    <p>I has htmls</p>
}
else {
    <script type="text/javascript">
        alert('I has javascripts');
    </script>
}

В вашем _Layout.cshtml или везде, где вы хотите, чтобы скрипты из частичных объектов были визуализированы, поставьте следующий (один раз): он будет отображать только javascript всех партиций на текущей странице в этом месте.

@{ Html.RenderPartialScripts(); }

Затем, чтобы использовать ваши частичные, просто сделайте это: он отобразит только html в этом месте.

@{Html.RenderPartialWithScript("~/Views/MyController/_MyPartial.cshtml");}
4
задан AL. 16 September 2016 в 06:53
поделиться

1 ответ

Такие последовательные ключи по сути ограничивают масштабируемость многопользовательской распределенной системы, которая также нуждается в устранении недостатка возможностей подключения. Это одна из причин, почему Firebase не поддерживает их.

Вместо Firebase имеет свой собственный тип ключа, называемый push ID . Подобно последовательности, которую вы ищете, они монотонно растут, и они также гарантированно уникальны. Но большая разница заключается в том, что идентификаторы push, в отличие от порядковых номеров большинства баз данных SQL, могут быть определены на стороне клиента.

Дополнительные сведения о массивах (похожих на последовательности) в Firebase см. В этом сообщении в блоге : https://firebase.googleblog.com/2014/04/best-practices-arrays-in-firebase.html .

Для получения дополнительной информации об идентификаторах push-бит Firebase см. это сообщение в блоге: https://firebase.googleblog.com/2015/02/the-2120-ways-to-ensure-unique_68.html

Если вы все еще решаете, что вы должны использовать последовательные идентификаторы, посмотрите на реализацию Kato этого здесь: http://jsfiddle.net/katowulf/5ESSp/ . Ядром этого является сохранение свойства counter в базе данных с текущим самым высоким порядковым номером, а затем использование транзакции для его обновления.

5
ответ дан Frank van Puffelen 18 August 2018 в 11:18
поделиться
  • 1
    Спасибо за ваш ответ, поэтому я могу в основном использовать & quot; push () & quot; для создания упорядоченных чисел вместо этого "1: name 2: Name & quot; он будет работать так, как это " 'pushid1': Имя 'pushid2': name '? – Neel Patel 16 September 2016 в 16:11
  • 2
    Если вам нужна хронологически упорядоченная коллекция детей в Firebase, то обычно используется push. – Frank van Puffelen 16 September 2016 в 23:54
Другие вопросы по тегам:

Похожие вопросы: