你是如何获得 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
基本上每次更新插件时,插件标识符都会更改folderName
或title
可能更改。因此,您需要使用dynamic data
.
这是一个简单的例子,可以画出更好的画面。如果您引用了一个名为“Holiday Sales”的插件,那么您将保存到您的数据存储集合{title: "Holiday Sales"}
中,然后通过该标题引用它。这可能会在短时间内起作用。但是,如果应用所有者将标题更改为“Summer Sale”,那么您的副本已过期。在传统数据库中,您将有 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": "...",
}
}
}
]
}
}
*/
});
希望这可以帮助