autoform、collection2、および単純なスキーマを使用して作成された挿入フォームがあります。このcreatedBy
フィールドには、autovalue を使用して userId が入力されます。挿入に使用するとフォームは機能しmeteor.allow()
ましたが、許可をメソッドに置き換えて、ユーザーロールの検証、つまりユーザーに管理者権限があることを確認したかったのです。createdBy
しかし、フィールドが空であるというエラーが表示されます。
開発ツールのエラーは次のとおりです。
エラー: 400、理由: "作成者が必要です"、詳細: 未定義、メッセージ: "作成者が必要です [400]"、errorType: "Meteor.Error"}
Courses = new Mongo.Collection('Courses');
courseSchema = new SimpleSchema({
title: {
type: String,
label: "Course Title"
},
description: {
type: String,
label: "Description"
},
createdAt: {
type: Date,
autoValue: function(){
return new Date();
},
autoform:{
type: 'hidden'
}
},
startDate:{
type: String,
label: "Start Date"
},
sessions: {
type: String,
label: "No. of sessions"
},
duration: {
type: String,
label: "Duration of the course"
},
price: {
type: String,
label: "Course Price"
},
createdBy:{
type: String,
autoValue:function(){
return this.userId;
},
autoform:{
type:'hidden'
}
}
});
Courses.attachSchema(courseSchema);
メソッド (クライアントとサーバーで利用可能):
Meteor.methods({
addCourse: function(course){
Courses.insert(course);
}
});
フォームが生成されるテンプレート:
<template name="adminIndex">
<h1>Available Courses</h1>
{{> courseList }}
<button type="button" class="btn btn-success btn-block">Create New Course</button>
<h3>Create New Course</h3>
{{>quickForm id="InsertCourseForm" collection="Courses" type="method" meteormethod="addCourse"}}
</template>