Javascript meteor js simpleschema索引与模式已存在,具有不同的选项
我正在使用meteor js w/simple模式Javascript meteor js simpleschema索引与模式已存在,具有不同的选项,javascript,mongodb,meteor,Javascript,Mongodb,Meteor,我正在使用meteor js w/simple模式 MongoError:具有以下模式的索引:{username:1}已存在,并且具有不同的选项 我关于db.users集合的架构是 Schema = {}; Schema.User = new SimpleSchema({ ... username: { type: String, unique: true, regEx: /^[a-z0-9]{3,32}$/ , max: 32, m
MongoError:具有以下模式的索引:{username:1}已存在,并且具有不同的选项
我关于db.users集合的架构是
Schema = {};
Schema.User = new SimpleSchema({
...
username: {
type: String,
unique: true,
regEx: /^[a-z0-9]{3,32}$/ ,
max: 32,
min: 3 },
...
});
我已经删除了mongodb中的索引,但在重新启动应用程序时仍然会出现错误。有人遇到过这种情况吗?Meteor在
用户
集合中提供了一些默认索引。发件人:
我没有检查,但我猜测
唯一性:true
可能是您的架构中与上述内容冲突的部分。您可以将您的架构与现有架构完美合并,其中已为用户名和电子邮件设置了索引和唯一性。由于您仅通过将它们显式设置为false来删除它们,因此它们将保持不变。btw为什么要再次设置最小值和最大值?正则表达式可能没问题。。也许你也想包括A-Z(或者使其不区分大小写:/^[A-z0-9]{3,32}$/i此外..让用户名以数字开头是个好主意吗?你决定;),所以如果你只想将正则表达式添加到用户名中,你可以附加而不需要合并选项(没有索引或唯一,因为它们已经定义好了)…你能举个例子吗,我总是得到“索引已经定义了不同的选项错误”,即使我先删除它
/// DEFAULT INDEXES ON USERS
Meteor.users._ensureIndex('username', {unique: 1, sparse: 1});
Meteor.users._ensureIndex('emails.address', {unique: 1, sparse: 1});
Meteor.users._ensureIndex('services.resume.loginTokens.hashedToken',
{unique: 1, sparse: 1});
Meteor.users._ensureIndex('services.resume.loginTokens.token',
{unique: 1, sparse: 1});
// For taking care of logoutOtherClients calls that crashed before the tokens
// were deleted.
Meteor.users._ensureIndex('services.resume.haveLoginTokensToDelete',
{ sparse: 1 });
// For expiring login tokens
Meteor.users._ensureIndex("services.resume.loginTokens.when", { sparse: 1 });