简体   繁体   English

Meteor 1.3 autoform / quickform错误

[英]Meteor 1.3 autoform / quickform error

I'm new to meteor and just arrived after the release 1.3. 我是流星的新手,刚刚在1.3版本之后到达。 I've struggled to debug some very "stupid" things due to omitted imports or exports as most of the tutorials don't seem to include that. 由于省略了导入或导出,我一直在努力调试一些非常“愚蠢”的东西,因为大多数教程似乎都没有包含它。 So the below issue might be of the same type. 因此,以下问题可能属于同一类型。

I would like to use the package autoform so I've just added the package. 我想使用autoform包,所以我刚刚添加了包。 (simple-schema and collection2 have also been included previously). (之前也包含了simple-schema和collection2)。

I'm getting error and the template doesn't load. 我收到错误,模板没有加载。

here is my template 这是我的模板

 <template name="addItem"> {{> quickForm collection="Items" id="addItemForm" type="insert" }} </template> 

I have my addItem.js 我有我的addItem.js

 import { Meteor } from 'meteor/meteor'; import { Template } from 'meteor/templating'; import { Mongo } from 'meteor/mongo'; import { Items } from '/imports/collections/itemCollection.js'; import './addItem.html'; Template.addItem.onCreated(function bodyOnCreated(){ AutoForm.debug(); Meteor.subscribe('items'); }); Template.addItem.helpers({ Items() { return Items.find({}); }, }); 

And my itemCollection.js file 还有我的itemCollection.js文件

 import { Mongo } from 'meteor/mongo'; export const Items = new Mongo.Collection('items'); Items.allow({ insert: () => false, update: () => false, remove: () => false }); Items.deny({ insert: () => true, update: () => true, remove: () => true }); Items.schema = new SimpleSchema({ name : {type : String}, supplier : {type : String}, Viscosity : {type : Number}, createdAt : {type : Date()}, owner : {type: String}, }); Items.attachSchema(Items.schema); 

Here is the error I get in the chrome console : 这是我在chrome控制台中遇到的错误:

 Exception in template helper: Error: Items is not in the window scope at Object.lookup (http://localhost:3000/packages/aldeed_autoform.js?hash=5dbf44ff89f182bd8c2512330e170ef4d5bf9582:231:15) at setDefaults (http://localhost:3000/packages/aldeed_autoform.js?hash=5dbf44ff89f182bd8c2512330e170ef4d5bf9582:3013:41) at Object.AutoForm.parseData (http://localhost:3000/packages/aldeed_autoform.js?hash=5dbf44ff89f182bd8c2512330e170ef4d5bf9582:2771:10) at Object.quickFormContext (http://localhost:3000/packages/aldeed_autoform.js?hash=5dbf44ff89f182bd8c2512330e170ef4d5bf9582:6696:33) at http://localhost:3000/packages/blaze.js?hash=ef41aed769a8945fc99ac4954e8c9ec157a88cea:2994:16 at http://localhost:3000/packages/blaze.js?hash=ef41aed769a8945fc99ac4954e8c9ec157a88cea:1653:16 at http://localhost:3000/packages/blaze.js?hash=ef41aed769a8945fc99ac4954e8c9ec157a88cea:3046:66 at Function.Template._withTemplateInstanceFunc (http://localhost:3000/packages/blaze.js?hash=ef41aed769a8945fc99ac4954e8c9ec157a88cea:3687:12) at http://localhost:3000/packages/blaze.js?hash=ef41aed769a8945fc99ac4954e8c9ec157a88cea:3045:27 at Object.Spacebars.call (http://localhost:3000/packages/spacebars.js?hash=65db8b6a8e3fca189b416de702967b1cb83d57d5:172:18) debug.js:41 Exception in defer callback: TypeError: Cannot read property 'id' of null at .<anonymous> (http://localhost:3000/packages/aldeed_autoform.js?hash=5dbf44ff89f182bd8c2512330e170ef4d5bf9582:6551:22) at http://localhost:3000/packages/blaze.js?hash=ef41aed769a8945fc99ac4954e8c9ec157a88cea:1875:20 at Function.Template._withTemplateInstanceFunc (http://localhost:3000/packages/blaze.js?hash=ef41aed769a8945fc99ac4954e8c9ec157a88cea:3687:12) at http://localhost:3000/packages/blaze.js?hash=ef41aed769a8945fc99ac4954e8c9ec157a88cea:1873:29 at Object.Blaze._withCurrentView (http://localhost:3000/packages/blaze.js?hash=ef41aed769a8945fc99ac4954e8c9ec157a88cea:2214:12) at viewAutorun (http://localhost:3000/packages/blaze.js?hash=ef41aed769a8945fc99ac4954e8c9ec157a88cea:1872:18) at Tracker.Computation._compute (http://localhost:3000/packages/tracker.js?hash=6f5d0f5486aaa54b0abe636174eeb06dcc2a736b:351:36) at new Tracker.Computation (http://localhost:3000/packages/tracker.js?hash=6f5d0f5486aaa54b0abe636174eeb06dcc2a736b:239:10) at Object.Tracker.autorun (http://localhost:3000/packages/tracker.js?hash=6f5d0f5486aaa54b0abe636174eeb06dcc2a736b:590:11) at Blaze.View.autorun (http://localhost:3000/packages/blaze.js?hash=ef41aed769a8945fc99ac4954e8c9ec157a88cea:1885:22) 

Someone could help and tell me what I might be doing wrong ? 有人可以帮忙告诉我,我可能做错了什么?

You could solve this problem by implementing a Meteor template helper which returns the collection Items and not a cursor, as you currently do now. 您可以通过实现Meteor模板帮助程序来解决此问题,该帮助程序返回集合Items而不是光标,就像您现在所做的那样。

For example: 例如:

import {Items} from '/itemCollection.js';

Template.addItem.helpers({
    items() {
        return Items;
    }
});

<template name="addItem">
    {{> quickForm collection=items id="addItemForm" type="insert" }}
</template>

Try importing the file itself instead of { Items } only. 尝试仅导入文件本身而不是{Items}。 I think the problem is, you are importing the collection only but its attachment isn't being imported. 我认为问题是,您只导入集合,但未导入其附件。 Try 尝试

import 'imports/collections/itemCollections.js'; import'import / collections / itemCollections.js';

And, you wouldn't need helpers function for insert type, its for update. 而且,你不需要helper函数用于insert类型,它用于更新。

try adding dburles:mongo-collection-helpers and doing the following. 尝试添加dburles:mongo-collection-helpers并执行以下操作。

import {Mongo} from "meteor/mongo";
import {Template} from "meteor/templating";

Template.registerHelper('collection', function (name) {
  return Mongo.Collection.get(name);
});

Then do this: 然后这样做:

+autoform(
  id="some-form"
  collection=(collection 'items')
)

My collection is called Services. 我的收藏称为服务。

/imports/startup/client/index.js /imports/startup/client/index.js

import { Services } from '/imports/api/services/services.js';

window.Services = Services;

/client/main.js /client/main.js

import '/imports/startup/client';

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM