我目前正在努力使节点色调-api npm库在我的MeteorJS项目中工作。我已经让桥梁搜索和连接工作(虽然它没有完全遵循流星的方式)。然而,我被困在寻找灯。
为了获得经过身份验证的客户端,我在桥组件方法中定义了以下代码:
import { Settings } from '../../settings/settings';
import { HueApi } from 'node-hue-api';
Meteor.methods({
'philipsHue.bridges.client'() {
const hueSettings = Settings.findOne({ type: 'philips-hue' });
return new HueApi(hueSettings.hostname, hueSettings.username);
}
});在我的轻型方法(不同的文件)中,我现在调用这个方法来获得一个经过身份验证的客户端:
Meteor.methods({
'lights.scan'() {
var hueClient = new HueApi(Meteor.call('philipsHue.bridges.client'));
hueClient.lights().then((val) => {
val.lights.forEach(function (hueLight) {
let dbLight = Lights.findOne({ id: hueLight.id });
if (dbLight) {
// we already have a db copy of this light, check for changes
}
else {
// we need a new local copy for this light
dbLight.insert(hueLight);
}
})
});
}
});返回的HueApi对象有正确的变量,但是它已经删除了它的所有方法--导致了一个未定义的方法错误。只有通过Meteor.call()传递的对象才会发生这种情况,如果我在同一个函数中创建对象,那么所有的方法都在那里。
这是我遇到问题的库的类:GitHub
是什么导致了这种脱衣舞的行为?我怎么才能修好它?
发布于 2016-07-19 11:53:16
发布于上面的评论.
流星方法可以在DDP上工作,而且我几乎可以肯定它们只发送JSON,而不发送带有方法之类的完整的“对象”。您可以使用Chrome的dev tools查看Meteor通过方法调用发送的内容,然后转到Network选项卡,然后对WS (Web )进行过滤。正如您必须转换Collection查询结果的结果一样,您可能需要做一些类似的事情,以使原始的JSON转换回您想要的完整对象。请记住,JavaScript并不真正处理“对象”,而是使用原型来模拟它们。
https://stackoverflow.com/questions/38425972
复制相似问题