Comment générer des ID unique node.js
function generate(count) {
var founded = false,
_sym = 'abcdefghijklmnopqrstuvwxyz1234567890',
str = '';
while(!founded) {
for(var i = 0; i < count; i++) {
str += _sym[parseInt(Math.random() * (_sym.length))];
}
base.getID(string, function(err, res) {
if(!res.length) {
founded = true; //How to do it?
}
});
}
return str;
}
Comment définir la valeur d'une variable avec la requête de base de données de rappel? Comment je peux faire?
- J'ai besoin de comprendre comment cela peut être fait avec une requête de base de données. Désolé, merci.
- Cette question est signalée à tort comme un doublon. La question liée réponses comment faire dans le générique de javascript; la plus haute cote de réponse à cette question est spécifique à node.js.
- J'aimerais coller ce qu'une réponse:
var hexstring = crypto.randomBytes(16).toString("hex");
suivie parvar guidstring = hexstring.substring(0,8) + "-" + hexstring.substring(8,12) + "-" + hexstring.substring(12,16) + "-" + hexstring.substring(16,20) + "-" + hexstring.substring(20);
- C'est une bonne réponse avec
new mongo.ObjectID();
et manuellement stackoverflow.com/a/56106999/4701635
Vous devez vous connecter pour publier un commentaire.
Il a été un certain temps depuis que j'ai utilisé node.js mais je pense que je pourrais être en mesure de vous aider.
Tout d'abord, dans le nœud, vous n'avez qu'un seul thread et sont censés utiliser les callbacks. Ce qui va se passer avec votre code, c'est que
base.getID
requête get file d'attente pour l'exécution, mais lawhile
boucle continusouly exécuter en tant qu'une boucle occupée inutilement.Vous devriez être en mesure de résoudre votre problème avec un rappel comme suit:
Et à l'utiliser comme tel
Je n'ai pas codé n'importe quel nœud/js dans environ 2 ans et je n'ai pas testé, mais l'idée de base devrait tenir – ne pas utiliser une boucle occupée, et l'utilisation de rappels. Vous pourriez avoir un regard sur le noeud asynchrone paquet.
Utilisation https://github.com/broofa/node-uuid
Ensuite créer des id ...
** Mise à JOUR 3.1.0
Ci-dessus l'utilisation est obsolète, afin de l'utiliser comme ceci:
const uuidv1 = require('uuid/v1');
La manière la plus rapide possible de créer aléatoire 32-chaine de caractères dans le Nœud est en utilisant natif
crypto
module:crypto.randomBytes(3*4).toString('base64') //=> '9uzHqCOWI9Kq2Jdw'
crypto
est maintenant intégré dans le nœud lui-même.. Vous obtenez ce message d'avertissement si vous mnp installer:[email protected]: This package is no longer supported. It's now a built-in Node module. If you've depended on crypto, you should switch to the one that's built-in
Une autre approche est d'utiliser le shortid paquet de mnp.
Il est très facile à utiliser:
et a quelques fonctionnalités fascinantes:
node-uuid
est obsolète, veuillez utiliseruuid
Npm lien
Plus facile et sans ajout de modules
function getId(mask) { return mask.replace(/[x]/gi, () => { return Math.random().toString(26)[5]; }) } console.log(getId('xxxx-xxxx-xxxx-xxxx-xxxx-xxxx'));
Si certains on a besoin de cryptographie forte de l'UUID, il y a la solution pour que ainsi.
https://www.npmjs.com/package/generate-safe-id
generate-safe-id
d'être abandonné ET les vulnérabilités de sécurité de ne pas être fixe (août 2018)