【发布时间】:2012-05-08 08:03:18
【问题描述】:
给定以下架构:
var UserSchema = new Schema({
, email : { type: String }
, passwordHash : { type: String }
, roles : { type: [String] }
});
我希望email 成为关键。
我该如何定义这个?
我能做到:
var UserSchema = new Schema({
, _id: { type: String }
, passwordHash : { type: String }
, roles : { type: [String] }
});
所以 MongoDB 会将其识别为 id 字段,并调整我的代码以引用 _id 而不是 email 但这对我来说并不干净。
有人吗?
【问题讨论】:
-
我认为您最好将 _id 保留为 ObjectID 并将电子邮件设为唯一索引。
-
这是普遍共识吗?将域 ID 设为唯一并让 MongoDB 处理技术 ID?
-
由于您使用的是 Mongoose,另一种选择是使用电子邮件字符串作为 _id 字段,然后添加一个名为“email”的virtual field,它返回 _id 以清理使用的代码电子邮件。