今天早上看到微博上喵大 @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 Jan 31, 2016
简单粗暴有效……
不过现在貌似都是直接用 MongoDB 的 ObjectId 吧 |
2
sox Jan 31, 2016
|
3
zsx Jan 31, 2016
|
4
whimsySun Jan 31, 2016
大致看了下,这个只是一个兼容原 api 的 api 服务端代码
|
5
vincentxue Jan 31, 2016 via iPhone
不必太在意,这个不是真正的,真正的是用 Go 写的。
|
6
pynix Jan 31, 2016
简单。。。
|
7
9999999999999999 Jan 31, 2016 via Android
人家都说了 只是 nodejs 的实现而已。
|
8
sjtlqy Jan 31, 2016
fb 的不都这样吗,快速开发实现.
hackthon 的 |
9
wuchizhitu1988 Jan 31, 2016
uuid
|
10
matsuijurina Jan 31, 2016
ruby 一行就可以了吧。 [*('a'..'z'),*('A'..'Z'),*('0'..'9')].shuffle[0,9].join
|
11
plqws Jan 31, 2016
他吐槽的是碰撞几率吧,而且插入之前不会去验证一下是不是已经存在了吗
|
12
bingwenshi Jan 31, 2016
@plqws 这种验证应该调用这个方法的地方,自己去验证吧
|
13
cloudzhou Jan 31, 2016
其实我觉得这个没有什么问题。
如果要强制 unique ,需要在数据库做一下主键限制 |
14
plqws Jan 31, 2016
@bingwenshi 我就是这个意思…所以认为那个人注释的槽点很奇怪
|
15
jetbillwin Feb 1, 2016
本来就不是 node ,生产环境以前从 Rails 转到 Go 了
|
17
beneo Feb 1, 2016
看了一圈,不知道这个是干嘛的,谁能科普一下
|