0

クライアント側から挿入できる Mongo コレクションを作成しようとしています。Courses.insert を呼び出すと成功しますが、ジャンク フィールドがコレクションに追加されます。

コード:

/imports/api/createCourse.js

import { Meteor } from 'meteor/meteor'
import { Template } from 'meteor/templating';
import './createCourse.html'
import { Courses } from './collections.js'

if (Meteor.isClient) {
Template.createCourse.events({
    'submit #register_form' : function(event) {
        var cName = event.target.courseName.value;
        var aCode = event.target.accessCode.value;
        var aClosedDate = event.target.accessClosedDate.value;
        console.log("Course Form Submitted.");

        //var cID = new ObjectID;
        var toInsert = {
            courseID: 1,
            ownerID: Meteor.userId(),
            courseName: cName,
            restrictionMask: 0, //????
            accessCode: aCode,
            accessClosedDate: aClosedDate,
            disabled: false
        };

          //   Courses.schema.validate(toInsert);
            console.log("about to insert");
            var result = Courses.insert(Meteor.userId(), toInsert);
            console.log(result);

    }
})

}

/imports/api/collections.js

import { Meteor } from 'meteor/meteor';
import { Mongo } from 'meteor/mongo';
import 'meteor/aldeed:collection2';

export const Courses = new Mongo.Collection("courses");

Courses.allow({
    'insert': function (userId) {
        return true;
    }
})

電話Courses.insert(Meteor.userId(), toInsert);したら、コンソールを開いてコレクションの内容を表示しますdb.courses.find()

流星コンソールの出力は次のとおりです。

{ "_id" : "NvcBX7MnSMx2LyJFz", "0" : "m", "1" : "X", "2" : "3", "3" : "H", "4" : "m", "5" : "i", "6" : "C", "7" : "p
", "8" : "p", "9" : "f", "10" : "a", "11" : "H", "12" : "e", "13" : "v", "14" : "9", "15" : "7", "16" : "R" }

注: データベースに挿入するたびに、_id は異なりますが、挿入しようとするデータに関係なく、他のキー:値はすべて同じです。

JavaScript コンソール出力は次のとおりです。

Course Form Submitted.
createCourse.js:33 about to insert
createCourse.js:35 NvcBX7MnSMx2LyJFz

誰かが問題が何であるかを指摘するのを手伝ってもらえますか. また、コレクションに関する安全な慣行に関するフィードバックや、一般的なフィードバックをいただければ幸いです。

4

2 に答える 2

1

挿入するために userId を明示的に渡す必要はありません。挿入機能はMeteor APIに記載されています。表示されるジャンクは userId です。

使用するだけです:

var result = Courses.insert(toInsert);
于 2016-07-27T02:10:28.753 に答える