Javascript meteor js simpleschema索引与模式已存在,具有不同的选项

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

我正在使用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,
     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 });