Odkryłem, jak Parse Server generuje nowy identyfikator przy tworzeniu tu .Powyższa dokumentacja komentarza stwierdza, że poniższa funkcja jest wywoływana w celu wygenerowania nowego identyfikatora dla Parse Server.
Wciąż nie wiem, dlaczego musi tworzyć identyfikator na swój sposób, zamiast używać rodzimego Mongo. Pomoże to w łatwym usunięciu zależności Parse Server.
Znajdź poniższy kod w c#, którego używam do generowania nowego identyfikatora, takiego jak serwer analizy. Nie testowałem tego we wszystkich aspektach, ale myślę, że przejdzie większość, jeśli nie wszystkie przypadki testowe innych.
/// <summary>
/// Randoms the string.
/// </summary>
/// <param name="length">The length.</param>
/// <returns></returns>
public static string RandomString(int length)
{
string chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZ" + "abcdefghijklmnopqrstuvwxyz" + "0123456789";
StringBuilder res = new();
using (RNGCryptoServiceProvider rng = new())
{
byte[] uintBuffer = new byte[sizeof(uint)];
while (length-- > 0)
{
rng.GetBytes(uintBuffer);
uint num = BitConverter.ToUInt32(uintBuffer, 0);
res.Append(chars[(int)(num % (uint)chars.Length)]);
}
}
return res.ToString();
}
/// <summary>
/// Gets the new object identifier.
/// </summary>
/// <param name="size">The size.</param>
/// <returns></returns>
public static string GetNewObjectId(int size = 10)
{
return RandomString(size);
}
Mam nadzieję, że ten przykładowy kod pomoże odtworzyć logikę w preferowanym języku.