如何使我自己的Meteor.users配置文件添加;使用aldeed autoform和collection2

时间:2015-11-23 06:24:14

标签: javascript mongodb meteor meteor-autoform meteor-collection2

我是一个流星和编码新手。我花了一整天时间尝试使用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);
 }
});

感谢您阅读!

1 个答案:

答案 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);
  }
},