今天早上看到微博上喵大 @onevcat 在吐槽这段代码
https://github.com/ParsePlatform/parse-server/blob/master/RestWrite.js#L704-L715
// Returns a string that's usable as an object id.
// Probably unique. Good enough? Probably!
function newObjectId() {
var chars = ('ABCDEFGHIJKLMNOPQRSTUVWXYZ' +
'abcdefghijklmnopqrstuvwxyz' +
'0123456789');
var objectId = '';
for (var i = 0; i < 10; ++i) {
objectId += chars[Math.floor(Math.random() * chars.length)];
}
return objectId;
}
如果大家来写这一段代码应该会怎样写?
1
int64ago 2016-01-31 12:38:46 +08:00
简单粗暴有效……
不过现在貌似都是直接用 MongoDB 的 ObjectId 吧 |
2
sox 2016-01-31 12:54:14 +08:00
|
3
zsx 2016-01-31 12:55:12 +08:00
|
4
whimsySun 2016-01-31 13:13:56 +08:00
大致看了下,这个只是一个兼容原 api 的 api 服务端代码
|
5
vincentxue 2016-01-31 14:14:26 +08:00 via iPhone
不必太在意,这个不是真正的,真正的是用 Go 写的。
|
6
pynix 2016-01-31 14:35:30 +08:00
简单。。。
|
7
9999999999999999 2016-01-31 14:39:28 +08:00 via Android
人家都说了 只是 nodejs 的实现而已。
|
8
sjtlqy 2016-01-31 16:52:10 +08:00
fb 的不都这样吗,快速开发实现.
hackthon 的 |
9
wuchizhitu1988 2016-01-31 17:16:20 +08:00
uuid
|
10
matsuijurina 2016-01-31 17:33:28 +08:00
ruby 一行就可以了吧。 [*('a'..'z'),*('A'..'Z'),*('0'..'9')].shuffle[0,9].join
|
11
plqws 2016-01-31 17:41:20 +08:00
他吐槽的是碰撞几率吧,而且插入之前不会去验证一下是不是已经存在了吗
|
12
bingwenshi 2016-01-31 17:54:04 +08:00
@plqws 这种验证应该调用这个方法的地方,自己去验证吧
|
13
cloudzhou 2016-01-31 20:38:49 +08:00
其实我觉得这个没有什么问题。
如果要强制 unique ,需要在数据库做一下主键限制 |
14
plqws 2016-01-31 23:12:40 +08:00
@bingwenshi 我就是这个意思…所以认为那个人注释的槽点很奇怪
|
15
jetbillwin 2016-02-01 01:16:16 +08:00
本来就不是 node ,生产环境以前从 Rails 转到 Go 了
|
17
beneo 2016-02-01 10:36:48 +08:00
看了一圈,不知道这个是干嘛的,谁能科普一下
|