没有其他Stack Overflow解决方案适合我(我找到了两个最相关的示例:How to list all the images/videos within a folder from cloudinary in Node.js?、NodeJS cloudinary search API by context)来解决此问题标题中所述的问题:在Node.js中,如果我尝试通过Cloudinary.v2或Axios访问Cloudinary API来检索资源,我无法从特定文件夹(以下代码中的“entiMediatii”,包含19张图片)检索资源数据。
- 虽然我可以简单地将它们的URL存储在MongoDB中,并以img src的形式加载它们,但创建一个临时集合感觉有些过头了,因为在我正在开发的站点的逻辑中,它们是一堆相对不重要的资产;因此,我更喜欢从云中获取它们的URL。*
因此,我在下面展示了我编写的四个不同的代码块,希望有人能帮助我。* 每个代码块记录一个空的结果列表。*
/////////////////////////// SOLUTION 1: Axios get A (within async func)
const {data} = await axios.get('https://api.cloudinary.com/v1_1/<cloudname>/resources/image/upload?sub_folder=entiMediatici', {
auth: {
username: process.env.cloudKey,
password: process.env.cloudSecret
}
});
console.log(data);
//////////////////////// SOLUTION 2: Axios post A
axios.post(`https://${process.env.cloudKey}:${process.env.cloudSecret}@api.cloudinary.com/v1_1/<cloudname>/resources/search`, {
"expression": "folder=entiMediatici/*"
}).then((response) => {
console.log(response.data);
}).catch(err=>{console.log(err);
});
//////////////////////// SOLUTION 3: Axios get B
axios.get(`https://${process.env.cloudKey}:${process.env.cloudSecret}@api.cloudinary.com/v1_1/<cloudname>/resources/image/context?folder=entiMediatici`).then((response) => {
console.log(response.data);
}).catch(err=>{console.log(err);
});
//////////////////////// SOLUTION 4: Admin API
cloudinary.search.expression(
'folder:entiMediatici/*' // add your folder
).sort_by('public_id','desc').max_results(100).execute().then(result=>console.log(result));
////////////////////////
谢谢你!
1条答案
按热度按时间dtcbnfnu1#
更新:解决方案(针对AXIOS)和后续问题
Cloudinary支持为我提供了Axios的正确语法,即在Axios POST请求中,
folder
后面应该是:
,而不是=
。此外,如果目标是子文件夹(就像在我的例子中),有必要提供完整的路径。根据他们的例子,我修改了我的代码如下。我贴出这个答案,以防其他人面临类似的问题。epasos_573的解决方案(我感谢他)的工作原理是一样的。在我的例子中,修改他提供的代码是:
所以,我的问题是:如果两种语法都有效,两者之间是否存在差异,使一种语法优于另一种语法?