我正在播放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”。 这里真的有什么不对?
由于
德里克
答案 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
集合,但不能在生产中访问。