无法将对象从angular2 / meteor中的数组插入数据库

时间:2017-01-23 00:03:35

标签: angular meteor typescript

我正在尝试使用我自己的类型'class'而不是'party'来执行Angular2 / Meteor教程,我在这行代码中遇到错误

classes.forEach((class: Class) => Classes.insert(class));

这是整个文件:

import { Classes } from '../../../both/collections/classes.collection';
import { Class } from '../../../both/models/class.model';

export function loadClasses() {
 if (Classes.find().cursor.count() === 0) {
const classes: Class[] = [{
  name: 'Class1',
  teacher: 'Dumbledore',
  location: 'room 101'
}, {
  name: 'Class2',
  teacher: 'Hagrid',
  location: 'Online'
}, {
  name: 'Class3',
  teacher: 'Harry Potter',
  location: 'room 124'
}];

classes.forEach((class: Class) => Classes.insert(class));

 }

}

以下是错误代码,其中大部分内容都是相同的。

server / imports / fixtures / classes.ts(20,54):类型'typeof(匿名类)'的参数不能分配给'Class'类型的参数。

不确定是否只是读错了我需要重置一些东西。我已多次梳理我的代码,无法找到任何语法/拼写错误。为了以防万一,我尝试了“流星重置”,但没有运气。

2 个答案:

答案 0 :(得分:0)

我怀疑Typescript不喜欢你使用ES6保留字class(小写)作为参数名称。

尝试用其他内容替换它(例如currentClass或除了另一个保留字之外的其他内容。)

使用Class(大写第一个字母)作为类或接口名称是合法的,但是肯定会在迟早的错误地方使用保留字class这样的错误

答案 1 :(得分:0)

我想我发现了你正在做的错误。 这是你犯错误的代码

classes.forEach((class: Class) => Classes.insert(class));

在这个classes.forEach中应该应用于要插入数据库的数组。在此循环中,您希望将每个类插入到数据库表中。并且您已将数组名称和数据库集合名称都视为错误的类。它如何区分?

尝试类似这样的代码

if (Head.find().cursor.count() === 0) {
      const heads = [
      { head: 'javascript'}, 
      { head: 'angularjs'}
      ];
    heads.forEach((defaulthead) => Head.insert(defaulthead));
  }

我同意ghybs的回答。你不应该使用保留字。保留字(如JavaScript关键字)不能用作名称