我尝试在用户首次创建帐户时将新集合插入数据库,但是,我收到了错误。
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);
答案 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';