javascript - Meteor JS - 客户端集合似乎是空的

标签 javascript node.js meteor

自从我使用 Meteor 或涉足 UI 世界以来已经很长时间了,所以如果这是一个糟糕的问题,请原谅我。

api/main.js:

export const Nodes = new Meteor.Collection("nodes");
export const Links = new Meteor.Collection("links");

服务器/main.js

import { Links, Nodes } from '../api/main.js';

Meteor.startup(() => {
  // code to run on server at startup
}

Meteor.methods({
  traverseDocument: function traverseDocument(documentKey) {
    // ... do stuff ...
    Links.insert( data.links );
    Nodes.insert( data.nodes );
    return data;
  }
}

客户端/main.js

import { Links, Nodes } from '../api/main.js';
import './main.html';

Meteor.startup(function () {
  // Fetch data via a call
  Meteor.call("traverseDocument", 'NTD000000228506', function (error, results) {});
});

Template.viz.rendered = function () {
  console.log(Nodes.find());                 // <-- LocalConnection.Cursor()
  console.log(Nodes.find().fetch());         // <-- This is empty []
  console.log(Nodes._collection._docs._map); // <-- This returns Object{}
}

我尝试过: 1. 发布/订阅 2.我尝试了一个辅助函数 3.我已将 Meteor.Call() 移至客户端启动函数中

所以现在这似乎更接近工作了。

原来的问题现在变成了 - 为什么 find().fetch() 返回一个空数组?

也许我应该发布一个新问题并将其标记为已修复?

最佳答案

您可以将回调结果值保存到 session 变量或 react 变量,然后稍后检索。

import { Links, Nodes } from '../api/main.js';
import './main.html';

Template.viz.rendered = function () {
  Meteor.call("traverseDocument", 'VALUE001', function (error, results) {
    if(error) {
      // handle error
    }
    else {
     Session.set('result',results);  // save result in session or reactive       variable
    }
    console.log(Nodes);  // <-- This works, has data
  });

  if(Session.get('result') {
  console.log(Session.get('result')); // <-- Retrieve value from session or reactive var
 }
}

关于javascript - Meteor JS - 客户端集合似乎是空的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39124653/

相关文章:

node.js - 无法使用 ejs 模板在 View 中显示 Flash 消息

meteor - 当用户注销时,内部带有图标的 {{#if currentUser}} 仍然呈现

mongodb - 在 Meteor 应用程序的服务器端使用 Iron 路由器?

javascript - ReactJS 嵌套列表 (flux)

javascript - JS : Searching a list of objects inside another

javascript - 未捕获的类型错误 : Cannot read property 'toLowerCase' of undefined

javascript - 如何使用多个异步/等待功能?

javascript - 需要按钮来显示和隐藏叠加导航

javascript - 如何将选项卡补全添加到 Nodejs CLI 应用程序

Meteor - 了解模板 'rendered' 调用