Nodejs générer de courte alphanumérique unique
Je voudrais générer un court alphanumérique unique de la valeur à être utilisés comme codes de confirmation pour les achats en ligne. Je l'ai regarder en https://github.com/broofa/node-uuid mais leur uuid sont trop longues et je dois être autour de 8 caractères de long. Quel est le meilleur moyen que je peux accomplir cela?
Unique et courte ne vont pas main dans la main, sauf si vous pouvez garantir qu'ils ont une seule origine, ou ont une méthode de verrouillage de sorte que les deux serveurs ne génèrent pas les mêmes chaînes.
Si vous utilisez une fonction de hachage, vous pouvez essayer de déterminer le plus court possible actuellement de sous-chaîne de la valeur de hachage conséquence, de même que la façon dont git abréger la validation des hachages.
Si vous utilisez une fonction de hachage, vous pouvez essayer de déterminer le plus court possible actuellement de sous-chaîne de la valeur de hachage conséquence, de même que la façon dont git abréger la validation des hachages.
OriginalL'auteur teggy | 2012-06-11
Vous devez vous connecter pour publier un commentaire.
10/23/15: Voir le hashids réponse ci-dessous, ainsi!
Vous pouvez emprunter le raccourcisseur d'URL de modèle et de faire quelque chose comme ceci:
Juste incrémenter le numéro de garder unique:
Note que ce n'est vraiment utile pour "instance unique" de services qui n'ont pas l'esprit d'un certain montant de la prévisibilité dans la façon dont cela est ordonné (par incrément). Si vous avez besoin d'une véritable valeur unique à travers un certain nombre d'application /DB cas, vous devriez vraiment envisager le plus complet de l'option par certains commentaires.
Ce qui ne l'
parseInt
ajouter? Ne serait pas(100000000000).toString(36)
fonctionne tout aussi bien?quel est le point de hasard?
(+new Date()).toString(36)
devrait vous donner un id unique.sinon:
Array.apply(0, Array(n)).reduce(function(p){return p + (Math.random() * 1e18).toString(36)}, '')
va générer un autour de l' (12 *n
) longueur de la chaîneLe seul défaut de cette approche est qu'elle ne garantit pas l'unicité en parallèle environnements. Deux machines ou de processus pourrait générer un code en même temps et vous pouvez avoir des conflits.
OriginalL'auteur Wes Johnson
Un peu de retard sur celui-ci, mais il semble comme hashids pourrait fonctionner assez bien pour ce scénario.
https://github.com/ivanakimov/hashids.node.js
Si vous souhaitez cibler ~ 8 caractères que vous pouvez faire, les éléments suivants qui exige un minimum de 8 caractères.
puis ceci:
Accepté la réponse serait prévisible/deviner, cette solution doit être unique et imprévisible.
Le lien est rompu.
Voici le lien.
le chiffrement & décryptage sont probablement des opérations coûteuses pour une simple génération de code
OriginalL'auteur James Moore
Installer shortId module (https://www.npmjs.com/package/shortid).
Par défaut, shortid génère 7-14 url-amicale des caractères: A-Z, a-z, 0-9, _- mais vous pouvez le remplacer - " et " _ avec d'autres personnages si vous le souhaitez.
Maintenant, vous devez en quelque sorte de bâton de ce shortId à vos objets quand ils sont sauvegardés dans la base de données. La meilleure façon est de les coller dans le Schéma comme ceci:
J'ai déjà répondu à semblable question à moi-même ici:
Mais il faut un dictionnaire de exactement 64 caractères, de sorte qu'il ne va pas être alphanumérique même si vous remplacez - et _.
OriginalL'auteur Drag0
Pour cela, j'ai écrit un module qui permet de le faire et de plus en plus.
Regardez sa page: id-court
OriginalL'auteur Andrey Hohutkin
SI chaque achat en ligne associé à l'URL Unique , vous pouvez utiliser le backend de simple-short paquet,qui ne nécessitent pas de connexion de base de données, ni de services web :
OriginalL'auteur Abdennour TOUMI
sur cette base https://www.npmjs.com/package/randomstring
vous pouvez le faire
OriginalL'auteur Kristian Heryanto iandeeph