Collection.insert不是一个函数 - 流星

时间:2017-06-30 13:55:52

标签: meteor collections mongoose

美好的一天开发者!我正在使用Meteor.js这是我的第一次见证 我在文件中创建了集合

 // ./dbs/messages.js

import { Mongo } from 'meteor/mongo';
import { Meteor } from 'meteor/meteor';
import { check } from 'meteor/check'; 

export const Messages = new Mongo.Collection('messages');

并在api点使用它,同时调用Messages.insert

// server/mail.js

import Messages from './dbs/messages.js';

Meteor.methods({
 'message.post'(messageText, location){
    Messages.insert({
      messageText: messageText,
      location: location
    });
  }
})

但是当我致电'message.post'时,我收到错误

Exception while invoking method 'message.post' TypeError
Messages.insert is not a function

但是,当我评论集合导入并在server/main.js中声明它时

// import Messages from './dbs/messages.js';
const Messages = new Mongo.Collection('messages');

Meteor.methods({
 'message.post'(messageText, location){
    Messages.insert({
      messageText: messageText,
      location: location
    });
  }
});

在这种情况下,我的Messages.insert可以正常使用。

谁有Meteor的经验 - 你能解释一下我的原因是什么吗? 谢谢! 我还删除了autopublishinsecure个套件

2 个答案:

答案 0 :(得分:5)

由于@MasterAM和@Ankur Soni说您需要使用括号QGraphicsItem导入消息 没有括号导入的唯一方法是定义消息,然后像QGraphicsObject

那样导出它

答案 1 :(得分:0)

我在“共同”空间中发起我的收藏。我觉得你所做的事实上是对的。您可以将集合声明两次,一次在客户端,一次在服务器端,或者只在公共文件夹中执行一次。我在许多文档中看到,保留这些声明的流行地点是/ imports / api ...这对于服务器和客户端都是通用的。

RGS, 保罗