简体   繁体   English

TypeError:SimpleSchema不是Meteor 1.6项目中的构造函数

[英]TypeError: SimpleSchema is not a constructor in Meteor 1.6 project

I am creating a SimpleSchema for my staff collection in Meteor and I am getting error "TypeError: SimpleSchema is not a constructor" in my server console. 我正在为Meteor中的员工集合创建一个SimpleSchema,我在服务器控制台中收到错误“TypeError:SimpleSchema不是构造函数”。 I've gone through the SimpleSchema documentation and this constructor is there, my code is same as their example. 我已经阅读了SimpleSchema文档,这个构造函数就在那里,我的代码和它们的例子相同。 Not sure why this error is coming. 不确定为什么会出现这个错误。

Server console Error Server console错误

W20180516-23:44:46.314(2)? (STDERR) /Users/anarayan/.meteor/packages/meteor-tool/.1.6.1_1.1rttc72.ip8ui++os.osx.x86_64+web.browser+web.cordova/mt-os.osx.x86_64/dev_bundle/server-lib/node_modules/fibers/future.js:280
W20180516-23:44:46.315(2)? (STDERR)                         throw(ex);
W20180516-23:44:46.315(2)? (STDERR)                         ^
W20180516-23:44:46.316(2)? (STDERR) 
W20180516-23:44:46.316(2)? (STDERR) TypeError: SimpleSchema is not a constructor
W20180516-23:44:46.316(2)? (STDERR)     at Staffs.js (imports/api/Staffs/Staffs.js:20:17)
W20180516-23:44:46.317(2)? (STDERR)     at fileEvaluate (packages/modules-runtime.js:343:9)
W20180516-23:44:46.317(2)? (STDERR)     at require (packages/modules-runtime.js:238:16)
W20180516-23:44:46.318(2)? (STDERR)     at methods.js (imports/api/Staffs/methods.js:1:193)
W20180516-23:44:46.318(2)? (STDERR)     at fileEvaluate (packages/modules-runtime.js:343:9)
W20180516-23:44:46.318(2)? (STDERR)     at require (packages/modules-runtime.js:238:16)
W20180516-23:44:46.319(2)? (STDERR)     at api.js (imports/startup/both/api.js:1:67)
W20180516-23:44:46.319(2)? (STDERR)     at fileEvaluate (packages/modules-runtime.js:343:9)
W20180516-23:44:46.319(2)? (STDERR)     at require (packages/modules-runtime.js:238:16)
W20180516-23:44:46.320(2)? (STDERR)     at index.js (imports/startup/server/index.js:1:50)
W20180516-23:44:46.320(2)? (STDERR)     at fileEvaluate (packages/modules-runtime.js:343:9)
W20180516-23:44:46.320(2)? (STDERR)     at require (packages/modules-runtime.js:238:16)
W20180516-23:44:46.321(2)? (STDERR)     at main.js (server/main.js:1:14)
W20180516-23:44:46.321(2)? (STDERR)     at fileEvaluate (packages/modules-runtime.js:343:9)
W20180516-23:44:46.321(2)? (STDERR)     at require (packages/modules-runtime.js:238:16)
W20180516-23:44:46.322(2)? (STDERR)     at /Users/anarayan/project/BusApp/.meteor/local/build/programs/server/app/app.js:7391:1
W20180516-23:44:46.323(2)? (STDERR)     at /Users/anarayan/project/BusApp/.meteor/local/build/programs/server/boot.js:411:36
W20180516-23:44:46.323(2)? (STDERR)     at Array.forEach (<anonymous>)
W20180516-23:44:46.323(2)? (STDERR)     at /Users/anarayan/project/BusApp/.meteor/local/build/programs/server/boot.js:220:19
W20180516-23:44:46.324(2)? (STDERR)     at /Users/anarayan/project/BusApp/.meteor/local/build/programs/server/boot.js:471:5
W20180516-23:44:46.324(2)? (STDERR)     at Function.run (/Users/anarayan/project/BusApp/.meteor/local/build/programs/server/profile.js:510:12)
W20180516-23:44:46.324(2)? (STDERR)     at /Users/anarayan/project/BusApp/.meteor/local/build/programs/server/boot.js:470:11

and Here is the class 这是班级

/* eslint-disable consistent-return */

import { Mongo } from 'meteor/mongo';
import { SimpleSchema } from 'simpl-schema';

const Staffs = new Mongo.Collection('staffs');

Staffs.allow({
  insert: () => false,
  update: () => false,
  remove: () => false,
});

Staffs.deny({
  insert: () => true,
  update: () => true,
  remove: () => true,
});

Staffs.schema = new SimpleSchema({
  name: {
    type: String,
    label: 'Staff Name',
  },
  email: {
    type: String,
    label: 'Staff email id',
  },
  mobile: {
    type: String,
    label: 'Staff mobile number',
  },
  status: {
    type: String,
    label: 'Staff Status',
  },
  role: {
    type: String,
    label: 'Role name',
  },
  location: {
    type: String,
    label: 'Location from where staff belongs',
  },
  createdAt: {
    type: String,
    label: 'The date this document was created.',
    autoValue() {
      if (this.isInsert) return (new Date()).toISOString();
    },
  },
  updatedAt: {
    type: String,
    label: 'The date this document was last updated.',
    autoValue() {
      if (this.isInsert || this.isUpdate) return (new Date()).toISOString();
    },
  },
});

Staffs.attachSchema(Staffs.schema);

export default Staffs;

Thanks for helping me out. 谢谢你的协助。

You need to import the package without curly brackets because it is exported to the public as default export : 您需要导入没有大括号的包因为它作为默认导出导出到公共:

import SimpleSchema from 'simpl-schema'; 

Because of this you could even import it this way: 因此,你甚至可以这样导入它:

import MyRenamedSchema from 'simpl-schema'; 

Which could then be called by the other named constructor new MyRenamedSchema 然后可以由另一个命名构造函数new MyRenamedSchema

Resources 资源

Quick start of the documentation: 快速入门文档:

https://github.com/aldeed/simple-schema-js/blob/master/README.md#quick-start https://github.com/aldeed/simple-schema-js/blob/master/README.md#quick-start

Export types: 出口类型:

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/export https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/export

Adding an answer for those coming here and already have un-curly-braced their import. 为那些来到这里的人添加一个答案,并且他们的导入已经完全没有卷曲。 It seems that if you already have data in your database this also occurs. 似乎如果您的数据库中已经有数据,这也会发生。

See https://stackoverflow.com/a/52579056/204658 请参阅https://stackoverflow.com/a/52579056/204658

You need to add below packages in your .meteor/packages to use the SimpleSchema constructor. 您需要在.meteor / packages中添加以下包以使用SimpleSchema构造函数。

aldeed:collection2
aldeed:simple-schema

Hope it helps ! 希望能帮助到你 !

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

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