Buildfire:私有门户插件

时间:2017-08-03 04:51:28

标签: buildfire

我正在尝试完成一个关于网关插件的非常具体的问题。

我正在尝试使用

导航到其他插件
'buildfire.pluginInstance.get($scope.deepLinnk,function (err, plugin) {
    if (err) {
    $scope.status = 'error!';
    }
    else {
    console.log(plugin);
    $scope.navigateSignIn(plugin);}

                                });
$scope.navigateSignIn = function (plugin) {
              buildfire.navigation.navigateTo({
                      pluginId: plugin.token,
                      instanceId: plugin.instanceId,
                      title: plugin.title,
                      folderName: plugin.pluginTypeId
                  });
                };

navigateTo对象是我可以获得buildfire.navigate.navigateTo来为buildfire制作的插件工作的唯一方法。

但是,当我尝试导航到我创建的插件时,调试器显示并显示“无法加载配置文件”的警报,然后整个平台崩溃并让我再次登录。

如何导航到我创建的插件?

1 个答案:

答案 0 :(得分:0)

你是如何得到pluginId,instanceId和folderName的?您无法简单地保存或硬编码。您需要发起dynamic data查询,请参阅https://github.com/BuildFire/sdk/wiki/How-to-use-the-Datastore-Dynamic-Data

你也可以查看一个例子,例如文件夹插件https://github.com/BuildFire/folderPlugin/blob/d84551feb06cfc304c325480ca96d87795a66929/widget/widget.controller.js#L163

基本上每次更新插件时,folderNametitle等插件标识都可能会发生变化。因此,您需要使用dynamic data保持参考数据新鲜。

这是一个可以画出更好画面的简单例子。如果您正在引用名为“Holiday Sales”的插件,那么您将保存到数据存储集合{title: "Holiday Sales"},因此可以通过该标题引用它。这可能会在短时间内起作用。但是,如果应用所有者将标题更改为“夏季促销”,则您的副本已过期。在传统数据库中,您将拥有2个表,其中一个表示真值来源,另一个表示foreign key引用第一个表。这样您join并始终显示最新数据。

Dynamic data是一种辅助查找。你只需给它一个密钥和那个密钥引用的内容。然后在运行时,当您进行呼叫时,它将进行您需要服务器端的查找并返回您正在寻找的最新数据。

样品:

buildfire.datastore.save("MyData",{
    _buildfire: { /// key identifier
        myPluginsToNavTo: {
            data:["123123-123123","asdasda-asdasd"] /// plugin instances
            ,dataType: "pluginInstance"
        }
    }
}); 

==

buildfire.datastore.getWithDynamicData("MyData",function(err,data){
// data would be:
/*
_buildfire: { /// key identifier
        myPluginsToNavTo: {
            data:["55f71347d06b61b4010351dc","asdasda-asdasd"]
            ,dataType: "pluginInstance"
            ,result: [ /// <=============new property added dynamically
                {
                    "id": "55f71347d06b61b4010351dc",
                    "data": {
                        "pluginTypeId": 3212,
                        "token": "6372b101-addf-45da-bb0a-9208a09e7b6b",
                        "title": "YouTube Plugin",
                        "iconUrl": "http://s3-us-west-2.amazonaws.com/pluginserver/plugins/6372b101-addf-45da-bb0a-9208a09e7b6b/resources/image.png",
                    }
                    ,{
                    "id": "asdasda-asdasd",
                    "data": {
                        "pluginTypeId": 123123,
                        "token": "1223123123-addf-45da-bb0a-9208a09e7b6b",
                        "title": "Plugin 2",
                        "iconUrl": "...",
                    }
                }
                }
            ]
        }
    }
*/
});

希望这会有所帮助