客户端无法识别MongoDB集合

时间:2016-12-13 07:59:58

标签: javascript meteor meteor-blaze

我正在播放Meteor,发现它没有按预期工作。我应该在服务器端和客户端都看到这个集合。但是,似乎我无法在客户端看到该集合。

在以下示例中,当我在Chrome控制台中输入“Products.find({})”时,我遇到了:

  

VM1592:1未捕获的ReferenceError:未定义产品

的客户机/ main.html中:

<body>
  {{> addProduct}}
</body>

<template name="addProduct">

  <form class="addNewProduct">
    product name:<br>
    <input type="text" name="name"><br>
    <button type="submit" value="submit">Submit</button>
  </form>
</template>

的客户机/ main.js:

import {Products} from "/lib/collections/products";
import './main.html';
Template.addProduct.events({

  'submit .addNewProduct'(event) {
    event.preventDefault();

    const target = event.target;
    const name = target.name.value;

    Products.insert({ name });
  },
});

LIB /收集/ products.js:

export const Products = new Mongo.Collection('products');

我没有删除“autopublish”。 这里真的有什么不对?

由于

德里克

1 个答案:

答案 0 :(得分:0)

我猜你正在使用Meteor 1.3或更高版本,所以它很有意义,因为在这些版本中Meteor适应ES6模块系统。因此,无法全局访问您的集合。如果您想在客户端控制台中访问它们,我建议在client/main.js

中使用此代码
import { Products } from "/lib/collections/products";
import './main.html';

if (Meteor.isDevelopment) {
  window.Products = Products;
}

Template.addProduct.events({
  // ...
});

这将允许您在开发时访问客户端控制台中的Products集合,但不能在生产中访问。

相关问题