如何在流星页面上使用Meteor简单模式

时间:2015-03-17 16:12:26

标签: javascript node.js mongodb meteor pagination

刚刚开始使用Meteor,我希望meteor-simple-schema能够使用meteor-pages

原理很简单,我只是在玩他们提供的示例todos应用程序,并希望添加无限滚动来加载更多待办事项。但我不能让两者兼得。

以下是我的默认meteor-simple-schema

代码
Todos = new Meteor.Collection('todos', {});
Schema = {};
Todos.attachSchema(new SimpleSchema({
    text: {
        type: String,
        label: "Name",
        max: 200,
        min: 2
    },
    createdAt: {
        type: Date,
        label: "Created",
        optional: false
    },
    creatorId: {
        type: String,
        label: "Creator",
        optional: false
    },
    done: {
        type: Boolean,
        defaultValue: false,
        label: "Done?",
        optional: true
    }        
}));

然后我将new Meteor.Collection('todos')切换为new Meteor.Pages('todos')甚至new Meteor.Pagination('todos')

但是架构会产生错误。我怎样才能同时工作?

以下是错误:

W20150317-22:47:23.197(1)? (STDERR) ~/.meteor/packages/meteor-tool/.1.0.41.azxhr5++os.osx.x86_64+web.browser+web.cordova/meteor-tool-os.osx.x86_64/dev_bundle/server-lib/node_modules/fibers/future.js:173
W20150317-22:47:23.197(1)? (STDERR)                         throw(ex);
W20150317-22:47:23.197(1)? (STDERR)                               ^
W20150317-22:47:23.199(1)? (STDERR) TypeError: Object #<Pages> has no method 'attachSchema'
W20150317-22:47:23.200(1)? (STDERR)     at app/collections/todos.js:25:7
W20150317-22:47:23.200(1)? (STDERR)     at app/collections/todos.js:60:3

3 个答案:

答案 0 :(得分:1)

所以这是一个很老的问题,但也许其他人仍在寻找答案。

要使用集合2的meteor-pages分页,你只需要传递Meteor.Pagination的集合对象。

示例:

var Customers = new Mongo.Collection("customers");

var Schemas = {};
Schemas.Customer = new SimpleSchema({ … });
Customers.attachSchema(Schemas.Customer);

var pages = new Meteor.Pagination(Customers, { … });

答案 1 :(得分:0)

您是否将其更改为新的Meteor.Pages或Meteor.Pagination?

您可以发布架构正在创建的问题吗?

而不是

    TODOS = new Meteor.Collection('todos');

尝试

    TODOS = new Mongo.Collection('todos');

看起来好像你可能需要它。

答案 2 :(得分:0)

在我看来,您没有将Collection2软件包添加到您的应用中 - 这是定义attachSchema方法的地方。以下命令应解决此问题。

meteor add aldeed:collection2