为什么Meteor Collection2使我的应用程序崩溃错误:架构不允许未定义

时间:2014-09-07 06:09:51

标签: meteor meteor-collection2

我刚刚将Meteor collection2添加到我的应用中。在服务器文件夹的文件中,我添加了代码:

Schema = {}


Schema.User = new SimpleSchema(
  _id:
    type: String
    regEx: SimpleSchema.RegEx.Id

  username:
    type: String
    regEx: /^[a-z0-9A-Z_]{3,15}$/

  emails:
    type: [Object]
    optional: true

  "emails.$.address":
    type: String
    regEx: SimpleSchema.RegEx.Email

  "emails.$.verified":
    type: Boolean

  createdAt:
    type: Date

)

Meteor.users.attachSchema Schema.User

它正在崩溃我的应用程序错误:

W20140907-02:06:32.777(-4)? (STDERR) /Users/Nearpoint/.meteor/packages/meteor-tool/.1.0.25.2ltu8i++os.osx.x86_64+web.browser+web.cordova/meteor-tool-os.osx.x86_64/dev_bundle/lib/node_modules/fibers/future.js:173
W20140907-02:06:32.777(-4)? (STDERR)                        throw(ex);
W20140907-02:06:32.777(-4)? (STDERR)                              ^
W20140907-02:06:32.792(-4)? (STDERR) Error: undefined is not allowed by the schema
W20140907-02:06:32.792(-4)? (STDERR)     at getErrorObject (packages/aldeed:collection2/collection2.js:489)
W20140907-02:06:32.792(-4)? (STDERR)     at doValidate (packages/aldeed:collection2/collection2.js:472)
W20140907-02:06:32.792(-4)? (STDERR)     at Meteor.Collection.(anonymous function) [as update] (packages/aldeed:collection2/collection2.js:282)
W20140907-02:06:32.792(-4)? (STDERR)     at UserConnections.upsert.$set.ipAddr (packages/mizzao:user-status/status.coffee:94:15)

我正在运行Meteor 0.9.0。我在服务器上附加架构代码。我不知道我做错了什么。我甚至尝试删除除_id之外的所有架构字段,但它仍然无效。

3 个答案:

答案 0 :(得分:7)

注意 - 要解决此问题,如果您正在使用mizzao:user-status,则只需要允许该软件包向您的用户doc添加status字段:

Schema.User = new SimpleSchema(
  ...
  status: {
    type: Object,
    optional: true,
    blackbox: true
  }
});

答案 1 :(得分:1)

我遇到了完全相同的问题。你有没有机会使用mizzao:user-status软件包?它会插入一个额外的字段来跟踪用户连接。 https://github.com/mizzao/meteor-user-status

在您设置帐户之前向Meteor.users文档添加字段的任何其他包可能会导致此问题。具体来说,当您登录时,它将创建一个仅包含连接字段的空白用户对象,这显然是您的架构所不允许的。

答案 2 :(得分:0)

由于用户是默认的Meteor集合,因此它可能是您想要保存的属性,而您不允许这样做。

我会使用RoboMongo或其他工具查看数据库,并确保包含所有属性。