流星JS-客户端集合似乎为空

埃西

自从我使用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()返回一个空数组?

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

阿杰夫

您可以将结果的值从回调保存到会话变量或反应变量,然后再检索。

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
 }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章