我使用meteor js w / simple-schema并获取
MongoError: Index with pattern: { username: 1 } already exists with different options
我在db.users集合周围的架构是
Schema = {};
Schema.User = new SimpleSchema({
...
username: {
type: String,
unique: true,
regEx: /^[a-z0-9]{3,32}$/ ,
max: 32,
min: 3 },
...
});
我已经删除了mongodb中的索引,但是当我重新启动应用程序时仍然出现错误。有人碰到过这个吗?
答案 0 :(得分:0)
Meteor在users
个集合中附带了一些默认索引。来自accounts-base:
/// 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 });
我没有检查过,但我猜测unique: true
可能是您的架构中与上述内容冲突的部分。
答案 1 :(得分:0)
您可以完美地将您的架构与已经为用户名和电子邮件设置索引和唯一的现有架构合并。因为你只是通过将它们明确地设置为false来删除它们,它们将保留。