【发布时间】:2015-08-31 20:18:45
【问题描述】:
我在服务器控制台中发现了这个错误:
延迟回调中的异常:TypeError: undefined is not a function 在包/ddp/livedata_server.js:1054:1 在 Array.forEach (本机) 在 Function..each..forEach (packages/underscore/underscore.js:105:1) 在 [object Object]._.extend._callStopCallbacks (packages/ddp/livedata_server.js:1053:1) 在 [object Object]._.extend._deactivate (packages/ddp/livedata_server.js:1043:1) 在包/ddp/livedata_server.js:803:1 在 Function..each..forEach (packages/underscore/underscore.js:113:1) 在 [object Object]._.extend._deactivateAllSubscriptions (packages/ddp/livedata_server.js:802:1) 在包/ddp/livedata_server.js:444:1 在 [object Object]._.extend.withValue (packages/meteor/dynamics_nodejs.js:56:1)
这里是我使用的代码:
/* Source: http://phucnguyen.info/blog/how-to-publish-to-a-client-only-collection-in-meteor/ */
var subs = {};
Meteor.publish(
// THROW AN 'EXCEPTION IN DERFER CALLBACK: ...'
'helperPublication',
function () {
var subscription = this;
subs[subscription._session.id] = subscription;
Datasets.find().map(function (dataset) {
subscription.added(
'subdatasets',
dataset._id,
{
name: dataset.name,
data: [], // To avoid "Uncaught TypeError: Cannot read property 'length' of undefined" error on load
peaks: [] // Idem
}
)
});
subscription.onStop();
subscription.ready()
});
您可以在以下流星垫中找到整个应用程序:http://meteorpad.com/pad/6NDneym2qEW7pF9JM/ClearChrom
【问题讨论】:
-
我认为您有很多问题。你到底想用这段代码实现什么?
-
出于性能考虑,我使用了 2 个独立的数据库。一种称为数据集,由客户端(受限访问)和服务器共享。另一个是仅限客户端的数据库:它存储数据集文档的克隆 BUT 键“数据”是数据的短子集(按需加载)。使用上面的代码,我想将 Datasets 文档复制到仅限客户端的数据库中。而且,可选地,我想为每个连接的客户端执行此操作(但坦率地说,我真的不需要也不想这样做,但我不知道如何更改 Phuc Nguyen 代码的那部分。 ..)。是不是更清楚了?
标签: meteor