【问题标题】:Mongo collection in Meteor is inserting junkMeteor 中的 Mongo 集合正在插入垃圾
【发布时间】:2016-11-30 20:14:48
【问题描述】:

我正在尝试创建一个可以从客户端插入的 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 都不一样,但是其他的 key:values 都是相同的,无论我尝试插入什么数据。

javascript 控制台输出为:

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

有人可以帮忙指出问题所在。我也非常感谢有关收藏的安全实践的任何反馈以及任何一般性的反馈。

【问题讨论】:

    标签: javascript mongodb meteor mongo-collection


    【解决方案1】:

    从插入查询中删除 Meteor.userId()。像这样插入:

    var result = Courses.insert(toInsert);
    

    【讨论】:

      【解决方案2】:

      无需显式传递 userId 即可插入。插入函数记录在Meteor API 中。您看到的垃圾是 userId。

      只需使用:

      var result = Courses.insert(toInsert);
      

      【讨论】:

      • 谢谢,我使用 userId() 的原因是因为 'insert' : function (userId)。它最初是“插入”:函数(userId,doc)。但是,我不明白这个函数到底是做什么的?你能解释一下吗?
      猜你喜欢
      • 2018-02-12
      • 1970-01-01
      • 2016-05-25
      • 1970-01-01
      • 1970-01-01
      • 2016-07-12
      • 1970-01-01
      • 2016-09-09
      • 2018-06-27
      相关资源
      最近更新 更多