在 Meteor 启动时向集合中插入数据
Insert data in collection at Meteor's startup
我想在 Meteor 启动时插入数据。 (在 JSON 文件之后)
在启动时,我创建了一个新帐户,我想插入数据并link它到这个帐户创建后。
这是在启动时创建新帐户的代码:
if(!Meteor.users.findOne({emails: { $elemMatch: { address: "test@test.com"}}})){
var id = Accounts.createUser({ email: "test@test.com", password: "1234", profile: { name: 'Test' } });
Meteor.users.update({_id: id }, { $set: { admin: false }});
}
然后,我需要插入数据并将其 link 插入到此帐户及其 ID。 (在不同的集合中)。
所以我尝试做类似的事情,但显然它没有用:
UserData = new Mongo.Collection('user_data');
if(!Meteor.users.findOne({emails: { $elemMatch: { address: "test@test.com"}}})){
var id = Accounts.createUser({ email: "test@test.com", password: "1234", profile: { name: 'Test' } });
Meteor.users.update({_id: id }, { $set: { admin: false }});
UserData.insert({
createdBy: id,
firstname: "test",
/* ... */
});
}
编辑
抱歉没说清楚。
真正的问题是:
UserData = new Mongo.Collection('user_data');
声明在另一个文件中,所以我不能像上面那样做。
因为它不在同一个文件中,所以我试图将获得 "test@test.com" 的 userId 作为电子邮件(该帐户的电子邮件在启动时创建)。一旦我得到它,我想在 "createdBy: ID_HERE".
中使用它
好的,你会想看看 Structuring your application。您必须使带有定义的文件更早加载,或者带有 fixture
的文件稍后加载。
通常你的 collections 在 lib/ 里面,你的 fixture
在 server/fixtures.js.
因此,如果您将插入代码放入 server/fixtures.js,它将起作用。
我想在 Meteor 启动时插入数据。 (在 JSON 文件之后)
在启动时,我创建了一个新帐户,我想插入数据并link它到这个帐户创建后。
这是在启动时创建新帐户的代码:
if(!Meteor.users.findOne({emails: { $elemMatch: { address: "test@test.com"}}})){
var id = Accounts.createUser({ email: "test@test.com", password: "1234", profile: { name: 'Test' } });
Meteor.users.update({_id: id }, { $set: { admin: false }});
}
然后,我需要插入数据并将其 link 插入到此帐户及其 ID。 (在不同的集合中)。
所以我尝试做类似的事情,但显然它没有用:
UserData = new Mongo.Collection('user_data');
if(!Meteor.users.findOne({emails: { $elemMatch: { address: "test@test.com"}}})){
var id = Accounts.createUser({ email: "test@test.com", password: "1234", profile: { name: 'Test' } });
Meteor.users.update({_id: id }, { $set: { admin: false }});
UserData.insert({
createdBy: id,
firstname: "test",
/* ... */
});
}
编辑
抱歉没说清楚。
真正的问题是:
UserData = new Mongo.Collection('user_data');
声明在另一个文件中,所以我不能像上面那样做。
因为它不在同一个文件中,所以我试图将获得 "test@test.com" 的 userId 作为电子邮件(该帐户的电子邮件在启动时创建)。一旦我得到它,我想在 "createdBy: ID_HERE".
中使用它好的,你会想看看 Structuring your application。您必须使带有定义的文件更早加载,或者带有 fixture
的文件稍后加载。
通常你的 collections 在 lib/ 里面,你的 fixture
在 server/fixtures.js.
因此,如果您将插入代码放入 server/fixtures.js,它将起作用。