üretir. Çevrimiçi alışverişlerde onay kodları olarak kullanılmak üzere kısa, benzersiz bir alfasayısal değer oluşturmak istiyorum. Ben https://github.com/broofa/node-uuid içine bakıyorum ama onların uuids çok uzun ve ben onları 8 karakter uzunluğunda olmak istiyorum. Bunu başarabilmemin en iyi yolu nedir?Nodejs, kısa bir benzersiz alfanümerik
cevap
10/23/15: Ayrıca aşağıdaki karma çözümlerine de bakınız!
URL kısaltıcı modelinden ödünç ve böyle bir şey yapabilirsiniz: Bu sadece gerçekten olduğunu
function(uniqueIndex) {
return uniqueIndex.toString(36);
}
Not:
(100000000000).toString(36);
// produces 19xtf1ts
(200000000000).toString(36);
// produces 2jvmu3nk
Sadece bu benzersiz tutmak için sayıyı artırmak "tek örnek" hizmetleri için, siparişin verildiği şekilde belirli bir miktar öngörülebilirlikten sakınmak için yararlıdır (temel artışla). Bir dizi uygulama/DB örneğinde gerçekten benzersiz bir değere ihtiyacınız varsa, bazı yorumlar için gerçekten tam özellikli bir seçenek düşünmelisiniz.
Bahşiş için teşekkürler. Sağladığınız şeye benzer bir şey kullanarak sona erdi: var now = new Date(); Math.floor (Math.random() * 10) + parseInt (now.getTime()). ToString (36) .toUpperCase() – teggy
"ParseInt" ne ekler? (100000000000) .toString (36) 'da değil mi? – JohnnyHK
Evet öyle olurdu. Sadece neler olduğunu açıklamak istedim. –
Bu konuda biraz geç ama bu senaryo için karmaşıklar çok iyi çalışır gibi görünüyor.
https://github.com/ivanakimov/hashids.node.js
hashids (Hash kimlikleri) oluşturur işaretsiz tamsayılar
var Hashids = require('hashids'),
hashids = new Hashids('this is my salt');
var hash = hashids.encrypt(12345);
// hash is now 'ryBo'
var numbers = hashids.decrypt('ryBo');
// numbers is now [ 12345 ]
sen ~ Yapabileceğin 8 karakter hedeflemek istiyorsanız kısa, eşsiz, decryptable karmaları şu o en az 8 karaktere çağrı yapar.
hashids = new Hashids("this is my salt", 8);
sonra bu:
hash = hashids.encrypt(1);
// hash is now 'b9iLXiAa'
kabul cevap tahmin edilebilir/öngörülebilir olacağını, bu çözüm eşsiz ve öngörülemez olması gerekir.
Biçimlendirmelerde 1.0.0 olarak güncellemeler. Bazı genel işlevler daha uygun olacak şekilde yeniden adlandırılır: ** İşlev şifrelemesi() encode() **, olarak değiştirilmiştir. ** İşlev şifresi() kod çözme() **, olarak değiştirilmiştir ** İşlev encryptHex() encodeHex olarak değiştirilmiştir() **, ** Fonksiyon şifresiHex() decodeHex() olarak değiştirildi. ** –
Bağlantı bozuk. –
İşte [yeni bağlantı] (https://github.com/ivanakimov/hashids.js). – cowgill
ShortId modülünü (https://www.npmjs.com/package/shortid) yükleyin. Varsayılan olarak, shortid 7-14 url-dostu karakterleri üretir: A-Z, a-z, 0-9, _- ancak değiştirebilirsiniz - ve eğer isterseniz başka karakterlerle _. Artık veritabanına kaydedildiklerinde bu kısa nesneye nesnelere yapışmanız gerekiyor.
var shortId = require('shortid');
var PurchaseConfirmationSchema = mongoose.Schema({
/* _id will be added automatically by mongoose */
shortId: {type: String, unique: true, default: shortId.generate}, /* WE SHOULD ADD THIS */
name: {type: String},
address: {type: String}
});
Zaten buraya kendime benzer soruyu yanıtladı: Bu amaçla
Merhaba, kısa bir süre sonra sunucu yeniden başlatıldıktan sonra benzersiz bir dize verecektir? –
Ama tam olarak 64 karakterden oluşan bir sözlük gerektiriyor, bu yüzden değiştirseniz bile alfanümerik olmayacak - ve _. –
bunu yapabilecek bir modül yazdım iyi yolu böyle Şemanıza onları sopa etmektir Bunu ve daha fazlasını yapın.id-shorter
Benzersiz URL'ye ilişkili her çevrimiçi satın alma, sen veritabanı bağlantısı gerektirmeyen simple-short paketinin arka uç, ne de web servislerini kullanabilen EĞER:
var shorten=require('simple-short');
shorten.conf({length:8}); // Default is 4.
code1=shorten('http://store.com/purchase1');
code2=shorten('http://store.com/purchase2');
//.. so on
- 1. Rastgele alfanümerik dize oluşturmak için Django paketi
- 2. kısa + kısa! = Kısa?
- 3. Kısa
- 4. Sıralama olmadan benzersiz benzersiz
- 5. Nodejs: nodejs içinde Kineticjs
- 6. Nodejs
- 7. nodejs
- 8. NodeJS
- 9. NodeJS
- 10. NodeJs
- 11. NodeJS
- 12. WPF KeyGestures - Alfanümerik olmayan anahtarların bağlanması
- 13. NodeJS
- 14. NodeJS
- 15. NodeJs
- 16. NodeJS
- 17. nodejs
- 18. Nodejs:
- 19. Java'da imzasız bir kısa olarak nasıl kısa yazdırırım
- 20. Altyazı içermeyen bir Bash dizesinin alfanümerik olmasını nasıl sağlayabilirim?
- 21. Nodejs: Hata: nodejs kullanarak 'html'
- 22. python benzersiz dize oluşturma
- 23. Kısa bir [] akış kullanarak oluşturma
- 24. Bağlam menüsü kısa bir tıklamayla
- 25. kısa tarihi
- 26. kısa versiyonu
- 27. nodejs: Bir proxy sunucusunda saklayın
- 28. Nodejs: yol bir dize olmalıdır
- 29. Nodejs bir dosyaya json yazıyor
- 30. django'daki benzersiz sütun değeri
Benzersiz ve kısa onun sayfada Bakış Tek bir kaynağa sahip olduklarını garanti etmedikçe veya iki sunucu aynı dizeleri üretmeyecek şekilde bazı kilitleme yöntemlerine sahip olmadıkça el ele gitmeyin. – Brad
Bir hash işlevini kullanırsanız, karma sonucunun mümkün olan en kısa alt dizesini belirlemeye çalışabilirsiniz, tıpkı işlem karmalarını kısaltmak gibi. – TheHippo