自从我使用 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/