Descobri como o Parse Server gera um novo ID na criação aqui .A documentação do comentário acima afirma que a função abaixo está sendo chamada para gerar um novo id para o Parse Server.
Eu ainda não sei por que ele tem que criar um id do seu jeito ao invés de usar o nativo do Mongo. Isso ajudará a remover facilmente a dependência do Parse Server.
Por favor, encontre o código abaixo em c# que estou usando para gerar um novo id como o servidor de análise. Eu não testei com todos os aspectos, mas acho que passará na maioria, se não em todos os casos de teste dos outros.
/// <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);
}
Espero que este código de exemplo ajude a recriar a lógica em seu idioma preferido.