cloudinary 的 destroy 方法没有响应
no response from destroy method of cloudinary
我正在尝试从客户端删除图像,但销毁方法不起作用,没有删除图像,同时也没有给我任何错误。
我正在使用 React.js,这是我的方法:
deleteProductHandler = id => {
db.collection("products")
.doc(id)
.delete()
.then(() => {
// update the UI
const products = [...this.state.products];
let images = [];
products.forEach((product, index) => {
if (product.id === id) {
products.splice(index, 1);
images = [...product.images];
this.setState({ show: false, products: products });
}
});
// delete images from cloudinary
let links = images
.map(link => {
return link.match("products/");
})
.map(link => {
const newlink = link.input.slice(link.index);
const newlink2 = newlink.slice(0, -4);
return { publicId: newlink2 };
});
let publicIds = [];
for (let key in links) {
publicIds.push(links[key].publicId);
}
console.log(publicIds);
// i got all publicIds here without any problem.
// so dont wory about the code above.
publicIds.forEach(publicId => {
console.log(publicId);
window.cloudinary.v2.uploader().destroy(publicId, (err, res) => {
console.log(err, res);
});
});
})
.catch(err => {
this.setState({ error: err });
});
};
这是销毁方法的文档:
https://cloudinary.com/documentation/image_upload_api_reference#destroy_method
我想在这里得到的是,当用户删除产品时,它的图像会自动从 cloudinary 中删除。
我认为 uploader
之后的额外 ()
可能是问题所在。
应该是
window.cloudinary.v2.uploader.destroy(publicId, (err, res) => {
console.log(err, res);
});
无法直接从客户端删除图像,因为无法使用存储在客户端中的详细信息来验证此类请求 - 如果您的帐户 API 机密可供客户端使用,任何您的用户可以使用该机密对您的帐户进行任意 API 调用。
在我的应用程序中,我没有任何服务器端组件,因为我使用的是 firebase firestore,而我在上面的代码中尝试做的是在客户端代码中呈现 destroy 方法,这是不可能的。
相反,您可能需要 node.js 中的服务器端组件。这是添加控制器以处理删除或其他类似操作的合乎逻辑的地方。
我正在尝试从客户端删除图像,但销毁方法不起作用,没有删除图像,同时也没有给我任何错误。
我正在使用 React.js,这是我的方法:
deleteProductHandler = id => {
db.collection("products")
.doc(id)
.delete()
.then(() => {
// update the UI
const products = [...this.state.products];
let images = [];
products.forEach((product, index) => {
if (product.id === id) {
products.splice(index, 1);
images = [...product.images];
this.setState({ show: false, products: products });
}
});
// delete images from cloudinary
let links = images
.map(link => {
return link.match("products/");
})
.map(link => {
const newlink = link.input.slice(link.index);
const newlink2 = newlink.slice(0, -4);
return { publicId: newlink2 };
});
let publicIds = [];
for (let key in links) {
publicIds.push(links[key].publicId);
}
console.log(publicIds);
// i got all publicIds here without any problem.
// so dont wory about the code above.
publicIds.forEach(publicId => {
console.log(publicId);
window.cloudinary.v2.uploader().destroy(publicId, (err, res) => {
console.log(err, res);
});
});
})
.catch(err => {
this.setState({ error: err });
});
};
这是销毁方法的文档: https://cloudinary.com/documentation/image_upload_api_reference#destroy_method
我想在这里得到的是,当用户删除产品时,它的图像会自动从 cloudinary 中删除。
我认为 uploader
之后的额外 ()
可能是问题所在。
应该是
window.cloudinary.v2.uploader.destroy(publicId, (err, res) => {
console.log(err, res);
});
无法直接从客户端删除图像,因为无法使用存储在客户端中的详细信息来验证此类请求 - 如果您的帐户 API 机密可供客户端使用,任何您的用户可以使用该机密对您的帐户进行任意 API 调用。
在我的应用程序中,我没有任何服务器端组件,因为我使用的是 firebase firestore,而我在上面的代码中尝试做的是在客户端代码中呈现 destroy 方法,这是不可能的。
相反,您可能需要 node.js 中的服务器端组件。这是添加控制器以处理删除或其他类似操作的合乎逻辑的地方。