相关疑难解决方法(0)

了解Meteor发布/订阅

我有一个简单的应用程序设置,显示一个列表Projects.我已经删除了autopublish包,所以我不会将所有内容发送给客户端.

 <template name="projectsIndex">    
   {{#each projects}}      
     {{name}}
   {{/each}}
 </template>
Run Code Online (Sandbox Code Playgroud)

autopublish打开时,这将显示所有项目:

if Meteor.isClient
  Template.projectsIndex.projects = Projects.find()
Run Code Online (Sandbox Code Playgroud)

删除后,我还要另外做:

 if Meteor.isServer
   Meteor.publish "projects", ->
     Projects.find()
 if Meteor.isClient
   Meteor.subscribe "projects"
   Template.projectsIndex.projects = Projects.find()
Run Code Online (Sandbox Code Playgroud)

那么,说客户端find()方法只搜索从服务器端发布的记录是否准确?它一直在绊倒我,因为我觉得我应该只打电话find()一次.

javascript publish-subscribe mongodb meteor

84
推荐指数
2
解决办法
2万
查看次数

你如何保护客户端MongoDB API?

我不希望我的所有用户都能够插入/销毁数据.

meteor

31
推荐指数
3
解决办法
9990
查看次数

显示Meteor React Client中的所有用户

我在使客户端显示所有注册用户时遇到一些麻烦.std:accounts-ui包装包括在内.meteor/packages.autopublish包已被删除.

所有用户的数据都以Users.jsas的形式发布allUsers,而客户端allUsers则从createContainer提供的内部订阅该发布react-meteor-data.

但是,该页面仅呈现当前登录用户的详细信息.Meteor.users().find().fetch()在浏览器中运行JS控制台仅显示当前登录的用户,如果用户未登录则不显示任何内容.

console.log(Meteor.users.find().fetch()在服务器端运行正确输出所有用户.

为什么会在浏览器上发生这种情况?

/imports/api/Users.js

import { Meteor } from 'meteor/meteor';

if (Meteor.isServer) {
    Meteor.publish('allUsers', function() {
        return Meteor.users.find({});
    })
}
Run Code Online (Sandbox Code Playgroud)

/imports/ui/App.jsx

import React, { Component, PropTypes } from 'react';
import { createContainer } from 'meteor/react-meteor-data';
import { Accounts } from 'meteor/std:accounts-ui';
import { Table } from 'react-bootstrap';
import User from './User';


export class App extends Component {

    renderUsers() { …
Run Code Online (Sandbox Code Playgroud)

javascript node.js meteor reactjs meteor-react

5
推荐指数
1
解决办法
623
查看次数

模板助手中的异常:TypeError:无法读取未定义的属性"profile"

在我收到此错误之前,我遇到了类似的问题:

模板助手中的异常:TypeError:无法读取未定义的属性"profile"

同样的事情再次发生,但是在第二个订单上,其中包含另一个用户配置文件信息(定义了第一个配置文件).我如何让它在{{#each orders}}中重新渲染?

当只有2个订单时,由于某种原因,似乎info.firstName,lastName和building被调用了3次...

在HTML中:

<template name="orderItem">
  <section>
    <form role="form" id="ordersList">
      <div>
        {{#each orders}}
          <input type="text" name="name" value="{{info.firstName}} {{info.lastName}}">
        {{/each}}
      </div>
      <div>
        {{#each orders}}
          <input type="text" name="building" value={{info.building}}>
        {{/each}}
      </div>
      <div>
        {{#each orders}}
          <input type="text" name="featuredDish" value={{featuredDish}}>
        {{/each}}
      </div>
    </form>
  </section>
</template>
Run Code Online (Sandbox Code Playgroud)

在javascript中:

Template.orderItem.orders = function() {
  var todaysDate = new Date();
  return Orders.find({dateOrdered: {"$gte": todaysDate}});
};

Template.orderItem.info = function() {
  var userId = this.userId;
  var user = Meteor.users.findOne(userId)
  var firstName = user.profile.firstName;
  var lastName = user.profile.lastName;
  var building …
Run Code Online (Sandbox Code Playgroud)

javascript meteor

4
推荐指数
1
解决办法
9881
查看次数