有一种方法可以通过使用wix-http-functions创建 API 来公开集合,但它似乎仅限于公开自定义集合 - 而不是 Wix 的本机集合(商店/收藏或商店/产品)。wix-http-functions上的示例很容易解释。下面是它的修改版本:
// In http-functions.js
import {ok, notFound, serverError} from 'wix-http-functions';
import wixData from 'wix-data';
// URL looks like:
// https://www.storename.com/_functions/storeProducts/1
// or
// https://user.wixsite.com/mysite/_functions/storeProducts/1
export function get_storeProducts(request) {
let options = {
"headers": {
"Content-Type": "application/json"
}
};
let pagesize=50;
// query a collection to find matching items
return wixData.query("Stores/Products")
// If you replace the "Stores/Products" with a custom collection name it works
.skip((request.path[0] - 1) * pagesize)
.limit(pagesize)
.find()
.then( (results) => {
// matching items were found
if(results.items.length > 0) {
options.body = {
"items": results.items
};
return ok(options);
}
// no matching items found
options.body = {
"error": `'${request.path[0]}' was not found`
};
return notFound(options);
} )
// something went wrong
.catch( (error) => {
options.body = {
"error": error
};
return serverError(options);
} );
}
不幸的是,这会导致“产品”等本机集合出现错误
{"error":{"name":"Error","errorGroup":"User","code":"WD_SCHEMA_DOES_NOT_EXIST"}}
(我找不到任何有关该错误的文档 - 所以这就是我卡住的地方)
如果您随后在“数据库”下的 Wix 代码中创建自定义集合,将产品从“商店/产品”导出到 CSV - 然后将 CSV 导入自定义集合(最后发布/同步自定义集合),您可以解决通过自定义 API 公开本机产品目录的明显限制。这并不理想 - 但如果您的目录不经常更改,它可能会起作用。