我是一个流星和编码新手。我花了一整天时间尝试使用aldeed:autoform和aldeed:collection2将配置文件信息添加到Meteor.users。我的成功多种多样,我几乎得到了我想要的东西(发布到mongo,但创造了新的id而不是附加到当前)但是我失去了某种地方。现在,我一直在
SimpleSchema invalid keys ... 0: Object
name: "emails"
type: "expectedArray"
我没有提交任何内容'被发布到Mongo。
以下是我认为我需要的所有东西: 集合/ simpleSchema.js
Meteor.users.allow({
update: function (userId, doc){
return !!userId;
}
});
Schema.UserProfile = new SimpleSchema({
firstName: {
type: String,
optional: true
},
lastName: {
type: String,
optional: true
},
birthday: {
type: Date,
optional: true
},
grade: {
type: String,
allowedValues: ['5', '6', '7', '8'],
optional: true
}
});
Schema.User = new SimpleSchema({
username: {
type: String,
// For accounts-password, either emails or username is required, but not both. It is OK to make this
// optional here because the accounts-password package does its own validation.
// Third-party login packages may not require either. Adjust this schema as necessary for your usage.
optional: true,
autoform: {
type: "hidden"
}
},
emails: {
type: Array,
// For accounts-password, either emails or username is required, but not both. It is OK to make this
// optional here because the accounts-password package does its own validation.
// Third-party login packages may not require either. Adjust this schema as necessary for your usage.
optional: true,
autoform: {
type: "hidden"
}
},
"emails.$": {
type: Object,
autoform: {
type: "hidden"
}
},
"emails.$.address": {
type: String,
regEx: SimpleSchema.RegEx.Email,
autoform: {
type: "hidden"
}
},
// "emails.$.verified": {
// type: Boolean
// },
createdAt: {
type: Date,
optional: true,
autoValue: function(){
return new Date();
},
autoform: {
type: "hidden"
}
},
profile: {
type: Schema.UserProfile,
optional: true
},
// Make sure this services field is in your schema if you're using any of the accounts packages
services: {
type: Object,
optional: true,
blackbox: true,
autoform: {
type: "hidden"
}
}
// Add `roles` to your schema if you use the meteor-roles package.
// Option 1: Object type
// If you specify that type as Object, you must also specify the
// `Roles.GLOBAL_GROUP` group whenever you add a user to a role.
// Example:
// Roles.addUsersToRoles(userId, ["admin"], Roles.GLOBAL_GROUP);
// You can't mix and match adding with and without a group since
// you will fail validation in some cases.
//roles: {
// type: Object,
// optional: true,
// blackbox: true
//}
// Option 2: [String] type
// If you are sure you will never need to use role groups, then
// you can specify [String] as the type
// roles: {
// type: [String],
// optional: true
// }
});
Meteor.users.attachSchema(Schema.User);
client.js
SimpleSchema.debug = true
Template.NewUser.helpers({
updateUserForm: function(){
return Meteor.user;
}
});
server.js
Meteor.methods({
update: function(doc) {
// Important server-side check for security and data integrity
check(doc, Meteor.users);
Meteor.users.clean(doc);
}
});
感谢您阅读!
答案 0 :(得分:0)
您没有在自己的内容中包含html。但是,您似乎正在使用自动表单上的方法更新。为了使其在您的服务器中工作,您需要调用Meteor.user.update()运算符。
updateProfile: function(doc, doc_id) {
var theUser = Meteor.users.findOne({
_id: doc_id
});
if (theUser._id !== Meteor.userId()) {
throw new Meteor.Error("Not Authorised");
} else {
Meteor.users.update({
_id: doc_id
}, doc);
}
},