2016-07-27 3 views
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); I откройте консоль и просмотрите содержимое коллекции с помощью. 0

Выход метеор консоль:

{ "_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" } 

Примечание: Everytime вставить в базу данных, то _id отличается, но другие ключевые: ценности являются идентичными независимо от того, какие данные я пытаюсь вставить ,

Javascript выход консоли:

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

Может кто-то пожалуйста, помогите, чтобы указать, что проблема есть. Я также был бы признателен за любые отзывы о безопасных методах сбора и любых отзывов в целом.

ответ

1

Нет необходимости передавать userId явно для вставки. Функция вставки зафиксирована в Meteor API. Убой, который вы видите, это userId.

Просто используйте:

var result = Courses.insert(toInsert); 
+0

Спасибо, Причина, по которой я использовал userId(), из-за функции «insert»: (userId). Первоначально он был «вставляем»: function (userId, doc). Однако я не понимаю, что именно делает эта функция? Вы можете объяснить? –

0

Удалить Meteor.userId() из запроса вставки. Просто вставьте вот так:

var result = Courses.insert(toInsert); 
Смежные вопросы