【发布时间】:2023-04-06 16:17:01
【问题描述】:
因此,当用户通过 Google、Twitter 等进行注册时,名称可能会重叠。在我的应用程序中,用户名具有唯一索引。由于每当有人第一次登录时都会将新文档放入集合中,因此有时唯一索引会失败。注册用户的代码如下:
module.exports.findOrCreateUser = (provider, id, data, done) ->
User.findByAuth provider, id, (err, user) ->
if err? then done err
else if user? then done null, user
else
user = new User
auth: [{id: id, provider: provider}]
name: data.name
email: data.email
user.save (err) ->
if err? then done err else done null, user
所以我这里有两个问题:
- 如何检查
err是否为唯一索引错误? - 向用户名附加唯一后缀的最有效方法是什么?
【问题讨论】:
-
如何通过用户登录的服务为其添加前缀/后缀。例如 google_username、twitter_username、facebook_username、...
-
对于 Q(1),我确信
err应该包含错误代码以及类似“重复键错误索引”之类的描述性消息。您应该记录一次err,以了解这一点。 -
@innoSPG:这是个好主意。我从来没想过这点。虽然我想避免显示他们用来登录的服务......
-
@AbhishekKumar 不幸的是,我无法找到有关
node-mongodb-native错误格式/代码的任何文档,也许你有什么? -
我猜这段代码是在服务器端执行的。另外,我建议您记录一次错误以了解实际错误。在 mongo shell 中,您会收到此错误
E11000 duplicate key error index: test.test2.$a_1 dup key: { : 1.0 }
标签: node.js mongodb oauth coffeescript