创建新用户帐户时出错

时间:2017-03-30 00:59:03

标签: meteor meteor-react

我尝试在用户首次创建帐户时将新集合插入数据库,但是,我收到了错误。

Exception while invoking method 'createUser' TypeError: Cannot read property 'insert' of undefined

我过去使用过类似的代码而没有遇到此问题。

路径:imports/startup/server/newUser.js

import { Meteor } from 'meteor/meteor';
import { Roles } from 'meteor/alanning:roles';
import { Accounts } from 'meteor/accounts-base';
import { Documents } from '../../api/documents/documents.js';

Accounts.onCreateUser((options, user) => {
      if (options.profile) {
        user.profile = options.profile;
      }

      Documents.insert({
        title: "Test Title",
        body: "Test Body"
      })

      return user;
    });

路径:imports/api/documents/documents.js

import { Mongo } from 'meteor/mongo';
import { SimpleSchema } from 'meteor/aldeed:simple-schema';
import { Factory } from 'meteor/dburles:factory';

const Documents = new Mongo.Collection('Documents');
export default Documents;

Documents.allow({
  insert: () => false,
  update: () => false,
  remove: () => false,
});

Documents.deny({
  insert: () => true,
  update: () => true,
  remove: () => true,
});

Documents.schema = new SimpleSchema({
  title: {
    type: String,
    label: 'The title of the document.',
  },
  body: {
    type: String,
    label: 'The body of the document.',
  },
});

Documents.attachSchema(Documents.schema);

2 个答案:

答案 0 :(得分:0)

如果您使用的是MongoDB,则必须首先声明文档集合,如下所示:

var Documents = new Mongo.Collection('documents');

然后你应该可以使用通常的MongoDB操作。

答案 1 :(得分:0)

所以答案很简单。我在流星论坛上发布了这个,@ jamgold提供了解决方案。找到答案here

我用过:

import { Documents } from '../../api/documents/documents.js';

使用括号导入是不正确的,因为我使用的是export default Documents。应该是:

import Documents from '../../api/documents/documents.js';