Facebook 开源的 Parse 后端代码节选...

2016-01-31 12:36:09 +08:00
 Pastsong

今天早上看到微博上喵大 @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;
}

如果大家来写这一段代码应该会怎样写?

5384 次点击
所在节点    JavaScript
19 条回复
int64ago
2016-01-31 12:38:46 +08:00
简单粗暴有效……

不过现在貌似都是直接用 MongoDB 的 ObjectId 吧
sox
2016-01-31 12:54:14 +08:00
zsx
2016-01-31 12:55:12 +08:00
whimsySun
2016-01-31 13:13:56 +08:00
大致看了下,这个只是一个兼容原 api 的 api 服务端代码
vincentxue
2016-01-31 14:14:26 +08:00
不必太在意,这个不是真正的,真正的是用 Go 写的。
pynix
2016-01-31 14:35:30 +08:00
简单。。。
9999999999999999
2016-01-31 14:39:28 +08:00
人家都说了 只是 nodejs 的实现而已。
sjtlqy
2016-01-31 16:52:10 +08:00
fb 的不都这样吗,快速开发实现.
hackthon 的
wuchizhitu1988
2016-01-31 17:16:20 +08:00
uuid
matsuijurina
2016-01-31 17:33:28 +08:00
ruby 一行就可以了吧。 [*('a'..'z'),*('A'..'Z'),*('0'..'9')].shuffle[0,9].join
plqws
2016-01-31 17:41:20 +08:00
他吐槽的是碰撞几率吧,而且插入之前不会去验证一下是不是已经存在了吗
bingwenshi
2016-01-31 17:54:04 +08:00
@plqws 这种验证应该调用这个方法的地方,自己去验证吧
cloudzhou
2016-01-31 20:38:49 +08:00
其实我觉得这个没有什么问题。
如果要强制 unique ,需要在数据库做一下主键限制
plqws
2016-01-31 23:12:40 +08:00
@bingwenshi 我就是这个意思…所以认为那个人注释的槽点很奇怪
jetbillwin
2016-02-01 01:16:16 +08:00
本来就不是 node ,生产环境以前从 Rails 转到 Go 了
pynix
2016-02-01 03:12:15 +08:00
@plqws 数据量很大要判断存在应该是个坑吧。
beneo
2016-02-01 10:36:48 +08:00
看了一圈,不知道这个是干嘛的,谁能科普一下
rekey
2016-02-16 17:50:39 +08:00
@beneo 生成 id 。
beneo
2016-02-17 10:31:45 +08:00
@rekey Parse 问的是这个

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/254579

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX