Meteor:在新创建的用户上插入文档

Meteor:在新创建的用户上插入文档,meteor,Meteor,这可能比我说的更简单 我允许我的用户在登录时创建他们的myprofile。这是一个存储在MyProfile=newmeteor.Collection('MyProfile')中的文档。其原理与LinkedIn完全相同……您登录并填写个人资料表单,所做的任何编辑都只会更新该文档 文档中会有“摘要”、“newsInterest”等字段,还有“owner”,即用户Id 1)如何将文档插入MyProfile集合中,且“所有者”字段是启动时新创建用户的用户ID? 这样,此文档的数据、这些字段的值将传递到m

这可能比我说的更简单

我允许我的用户在登录时创建他们的myprofile。这是一个存储在
MyProfile=newmeteor.Collection('MyProfile')中的文档。其原理与LinkedIn完全相同……您登录并填写个人资料表单,所做的任何编辑都只会更新该文档

文档中会有“摘要”、“newsInterest”等字段,还有“owner”,即用户Id

1)如何将文档插入MyProfile集合中,且“所有者”字段是启动时新创建用户的用户ID?

这样,此文档的数据、这些字段的值将传递到myprofile页面。最初返回的值将为空,但随着用户的键入,键入后myprofile文档将更新

用户在客户端上的创建方式如下所示。现在还可以

2)此外,如果有人在服务器上创建了用户,请提供任何链接。我调用了一个方法,将以下内容作为对象插入
Meteor.users.insert(object)但这不起作用。

Template.join.events({
'submit #join-form': function(e,t){
e.preventDefault();
Accounts.createUser({
  username: t.find('#join-username').value,
  password: t.find('#join-password').value,
  email: t.find('#join-email').value,
  profile:{
    fullname: t.find('#join-fullname').value,
summary: [],
newsInterest: [],
otherstuff: []
  }
});
Router.go('myprofile');
}
});

使用服务器上的回调可以很容易地解决问题1——它为回调提供了用户对象,因此您可以从中获取用户ID,并插入一个新的“myProfile”和该所有者

正如威尔·帕克(Will Parker)在下面指出的,用户文档此时实际上没有
\u id
,因此您需要创建一个id,并将其添加到回调返回的
用户
对象中。您可以通过以下方式执行此操作:

user._id = Meteor.users._makeNewID();

使用服务器上的回调可以很容易地解决问题1——它为回调提供了用户对象,因此您可以从中获取用户ID,并插入一个新的“myProfile”和该所有者

正如威尔·帕克(Will Parker)在下面指出的,用户文档此时实际上没有
\u id
,因此您需要创建一个id,并将其添加到回调返回的
用户
对象中。您可以通过以下方式执行此操作:

user._id = Meteor.users._makeNewID();

使用服务器上的回调可以很容易地解决问题1——它为回调提供了用户对象,因此您可以从中获取用户ID,并插入一个新的“myProfile”和该所有者

正如威尔·帕克(Will Parker)在下面指出的,用户文档此时实际上没有
\u id
,因此您需要创建一个id,并将其添加到回调返回的
用户
对象中。您可以通过以下方式执行此操作:

user._id = Meteor.users._makeNewID();

使用服务器上的回调可以很容易地解决问题1——它为回调提供了用户对象,因此您可以从中获取用户ID,并插入一个新的“myProfile”和该所有者

正如威尔·帕克(Will Parker)在下面指出的,用户文档此时实际上没有
\u id
,因此您需要创建一个id,并将其添加到回调返回的
用户
对象中。您可以通过以下方式执行此操作:

user._id = Meteor.users._makeNewID();

问题2:您必须向服务器发送电子邮件、密码和配置文件对象,并使用相同的
帐户。createUser
。一切正常。

问题2:您必须向服务器发送电子邮件、密码和配置文件对象,并使用相同的
帐户。createUser
。一切正常。

问题2:您必须向服务器发送电子邮件、密码和配置文件对象,并使用相同的
帐户。createUser
。一切正常。

问题2:您必须向服务器发送电子邮件、密码和配置文件对象,并使用相同的
帐户。createUser
。一切正常。

1)为了解决第一个问题,您有两个选择

而不是像在标准化的MySQL数据库中那样为概要文件创建单独的集合。在已附加到用户集合中的对象的配置文件对象中添加用户配置文件数据。然后,可以将所需的值传递到

这是一个使用jQuery获取值的示例,但是您的t.find应该同样有效

如果确实希望使用单独的集合,则我建议在(服务器端)中使用以下代码:

当您要更新或向用户的配置文件字段中添加其他数据时,可以使用以下选项:

var newProfile = {
    summary: 'This summary',
    newsInterest: 'This newsInterest',
    otherstuff: 'Stuff'
};

Meteor.users.update(Meteor.userId, {$set: {profile: newProfile}});
var newProfile = MyProfile.findOne(Meteor.userId);
newProfile.summary = 'This summary';
newProfile.newsInterest = 'This newsInterest';
newProfile.otherstuff = 'Stuff';

MyProfile.update(Meteor.userId, newProfile);
或者,如果您选择单独收集选项,请执行以下操作:

var newProfile = {
    summary: 'This summary',
    newsInterest: 'This newsInterest',
    otherstuff: 'Stuff'
};

Meteor.users.update(Meteor.userId, {$set: {profile: newProfile}});
var newProfile = MyProfile.findOne(Meteor.userId);
newProfile.summary = 'This summary';
newProfile.newsInterest = 'This newsInterest';
newProfile.otherstuff = 'Stuff';

MyProfile.update(Meteor.userId, newProfile);
我还没有测试过,所以如果我有任何语法/打字错误,请告诉我,我会更新

1)要解决第一个问题,您有两个选择

而不是像在标准化的MySQL数据库中那样为概要文件创建单独的集合。在已附加到用户集合中的对象的配置文件对象中添加用户配置文件数据。然后,可以将所需的值传递到

这是一个使用jQuery获取值的示例,但是您的t.find应该同样有效

如果确实希望使用单独的集合,则我建议在(服务器端)中使用以下代码:

当您要更新或向用户的配置文件字段中添加其他数据时,可以使用以下选项:

var newProfile = {
    summary: 'This summary',
    newsInterest: 'This newsInterest',
    otherstuff: 'Stuff'
};

Meteor.users.update(Meteor.userId, {$set: {profile: newProfile}});
var newProfile = MyProfile.findOne(Meteor.userId);
newProfile.summary = 'This summary';
newProfile.newsInterest = 'This newsInterest';
newProfile.otherstuff = 'Stuff';

MyProfile.update(Meteor.userId, newProfile);
或者,如果您选择单独收集选项,请执行以下操作:

var newProfile = {
    summary: 'This summary',
    newsInterest: 'This newsInterest',
    otherstuff: 'Stuff'
};

Meteor.users.update(Meteor.userId, {$set: {profile: newProfile}});
var newProfile = MyProfile.findOne(Meteor.userId);
newProfile.summary = 'This summary';
newProfile.newsInterest = 'This newsInterest';
newProfile.otherstuff = 'Stuff';

MyProfile.update(Meteor.userId, newProfile);
我还没有测试过,所以如果我有任何语法/打字错误,请告诉我,我会更新

1)要解决第一个问题,您有两个选择

而不是像在标准化的MySQL数据库中那样为概要文件创建单独的集合。在已附加到用户集合中的对象的配置文件对象中添加用户配置文件数据。然后,可以将所需的值传递到

这是一个使用jQuery获取值的示例,但是您的t.find应该同样有效

如果您确实希望使用单独的集合,那么我建议在(si)服务器中使用以下代码