Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/meteor/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 无法使用React显示mongo集合_Javascript_Meteor_Reactjs_Collections - Fatal编程技术网

Javascript 无法使用React显示mongo集合

Javascript 无法使用React显示mongo集合,javascript,meteor,reactjs,collections,Javascript,Meteor,Reactjs,Collections,我正在尝试使用react和Meteor列出我的项目集合。 我有两个收集决议和项目。 我能够在前端显示“分辨率”集合,但未能在前端显示“项目”集合。我不知道我做错了什么 我在控制台中得到的错误是: Projects.find() is not a function 我在控制台中也会遇到此错误: warning.js:44 Warning: There is an internal error in the React performance measurement code. Did not

我正在尝试使用react和Meteor列出我的项目集合。 我有两个收集决议和项目。 我能够在前端显示“分辨率”集合,但未能在前端显示“项目”集合。我不知道我做错了什么

我在控制台中得到的错误是:

 Projects.find() is not a function
我在控制台中也会遇到此错误:

warning.js:44 Warning: There is an internal error in the React performance measurement code. Did not expect componentDidMount timer to start while render timer is still in progress for another instance.
任何帮助都将不胜感激,因为我在这个问题上陷入困境,谢谢你

以下是文件夹页面下列出的my Projects.jsx文件:

import React, {Component} from 'react';
import TrackerReact from 'meteor/ultimatejs:tracker-react';
import ReacCSSTransitionGroup from 'react-addons-css-transition-group';

import ProjectsForm from '../projects/ProjectsForm.jsx';
import ProjectSingle from '../projects/ProjectSingle.jsx';

if(Meteor.isClient){
    Projects = new Mongo.Collection('projects');
}

export default class Projects extends TrackerReact(Component) {
    constructor(){
        super();

        this.state = {
            subscription: {
                projects: Meteor.subscribe('allProjects')
            }
        }
    }
    ComponentWillUnmount() {
        this.state.subscription.projects.stop();
    }
    projects() {
        return Projects.find().fetch();
    }
    render() {
        DocHead.setTitle('Projects | My Projects');
        return (
            <ReacCSSTransitionGroup
                component="div"
                transitionName="route"
                transitionEnterTimeout={600}
                transitionAppearTimeout={600}
                transitionLeaveTimeout={400}
                transitionAppear={true}>
                <h1>Projects</h1>
                <ProjectsForm />
                {this.projects().map((project) => {
                    return <ProjectSingle key={project._id} project={project} />
                })}
            </ReacCSSTransitionGroup>
        )
    }
}

听起来您没有正确引用
项目
集合。不要在两个位置定义
项目
集合,而是在可以从客户端和服务器引用的位置定义它一次,然后根据需要导入它。例如:

1) 创建一个新文件夹/文件以保存您的
项目
集合(遵循应用程序结构):

/imports/api/projects/collection.js

import { Mongo } from 'meteor/mongo';
const Projects = new Mongo.Collection('projects');
export default Projects;
2) 修改您的客户端
Projects.jsx
文件以更改您的
Projects
引用:

更换以下部件

if (Meteor.isClient){
  Projects = new Mongo.Collection('projects');
}
Projects = new Mongo.Collection('projects');
带有以下内容

import Projects from '/imports/api/projects/collection';
import Projects from '/imports/api/projects/collection';
3) 修改服务器端的
publish.js
文件,如下所示:

更换以下部件

if (Meteor.isClient){
  Projects = new Mongo.Collection('projects');
}
Projects = new Mongo.Collection('projects');
带有以下内容

import Projects from '/imports/api/projects/collection';
import Projects from '/imports/api/projects/collection';

听起来您没有正确引用
项目
集合。不要在两个位置定义
项目
集合,而是在可以从客户端和服务器引用的位置定义它一次,然后根据需要导入它。例如:

1) 创建一个新文件夹/文件以保存您的
项目
集合(遵循应用程序结构):

/imports/api/projects/collection.js

import { Mongo } from 'meteor/mongo';
const Projects = new Mongo.Collection('projects');
export default Projects;
2) 修改您的客户端
Projects.jsx
文件以更改您的
Projects
引用:

更换以下部件

if (Meteor.isClient){
  Projects = new Mongo.Collection('projects');
}
Projects = new Mongo.Collection('projects');
带有以下内容

import Projects from '/imports/api/projects/collection';
import Projects from '/imports/api/projects/collection';
3) 修改服务器端的
publish.js
文件,如下所示:

更换以下部件

if (Meteor.isClient){
  Projects = new Mongo.Collection('projects');
}
Projects = new Mongo.Collection('projects');
带有以下内容

import Projects from '/imports/api/projects/collection';
import Projects from '/imports/api/projects/collection';

原来我需要将Projects.jsx文件的名称更改为ProjectsWrapper.jsx,因为集合已经在使用名称空间Projects。我可以做相反的事情并更改集合名称,但我认为这是最好的方法。

结果我需要将Projects.jsx文件的名称更改为ProjectsWrapper.jsx,因为集合已经在使用名称空间Projects。我可以做相反的事情,改变收藏名称,但我认为这是我拥有的最好的方式