[英]How to make my own Meteor.users profile additions; using aldeed autoform and collection2
我是流星,正在編碼新手。 我整天都在嘗試使用aldeed:autoform和aldeed:collection2將配置文件信息添加到Meteor.users。 我的成功參差不齊,我幾乎得到了想要的東西(發布到mongo,但是創建了新的id而不是附加到當前的id),但是卻迷失了自己。 現在,我不斷
SimpleSchema invalid keys ... 0: Object
name: "emails"
type: "expectedArray"
而且我“提交”的任何內容都不會發布到Mongo。
這是我認為我需要的所有東西:collections / 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);
}
});
感謝您的閱讀!
您沒有在內容中包含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); } },
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.