首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >方法在通过Metro.call()传递时从对象中剥离。

方法在通过Metro.call()传递时从对象中剥离。
EN

Stack Overflow用户
提问于 2016-07-17 21:12:34
回答 1查看 27关注 0票数 0

我目前正在努力使节点色调-api npm库在我的MeteorJS项目中工作。我已经让桥梁搜索和连接工作(虽然它没有完全遵循流星的方式)。然而,我被困在寻找灯。

为了获得经过身份验证的客户端,我在桥组件方法中定义了以下代码:

代码语言:javascript
复制
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);
    }
});

在我的轻型方法(不同的文件)中,我现在调用这个方法来获得一个经过身份验证的客户端:

代码语言:javascript
复制
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

是什么导致了这种脱衣舞的行为?我怎么才能修好它?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-07-19 11:53:16

发布于上面的评论.

流星方法可以在DDP上工作,而且我几乎可以肯定它们只发送JSON,而不发送带有方法之类的完整的“对象”。您可以使用Chrome的dev tools查看Meteor通过方法调用发送的内容,然后转到Network选项卡,然后对WS (Web )进行过滤。正如您必须转换Collection查询结果的结果一样,您可能需要做一些类似的事情,以使原始的JSON转换回您想要的完整对象。请记住,JavaScript并不真正处理“对象”,而是使用原型来模拟它们。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38425972

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档