如何为 mlab 设置“访问控制允许方法”
使用其 RESTful api 时,它不允许使用 delete
方法。其 documentation 上没有任何说明
var d = new Date()
d.setHours(0,0,0,0)
var yMidnight = d.getTime() - 24 * 1000 * 3600
fetch(url('photo', JSON.stringify({ date: { $lt: yMidnight } })) + '&m=true'), {
method: 'delete',
headers: {
'Content-type': 'application/json;charset=utf-8'
}
})
.then(() => {
console.log('success')
})
.catch(err => {
console.log(err)
})
function url(collection, q) {
if (q) {
return `${host}${collection}?apiKey=${apiKey}&q=${q}`
}
return `${host}${collection}?apiKey=${apiKey}`
}
最佳答案
删除单个和多个文档的方式与 API 不同。 DELETE 方法仅在您对单个文档资源进行操作时才有效。所以你可以提出这样的请求:
DELETE /databases/{database}/collections/{collection}/{_id}
这将删除 URL 中指定的 _id
的文档。但是,即使使用 q
查询参数返回,/databases/{database}/collections/{collection}
端点也无法选择使用 DELETE 请求文件。
要使用 q
查询参数删除集合中的多个文档,您必须使用 PUT 请求。请参阅此处的文档:https://docs.mlab.com/data-api/#delete-documents
所以你的获取方法应该如下所示:
fetch(url('photo', JSON.stringify({ date: { $lt: yMidnight } })) + '&m=true'), {
method: 'put',
data: JSON.stringify([]),
headers: {
'Content-type': 'application/json;charset=utf-8'
}
})
这会将所有与 q
查询参数匹配的文档替换为空列表,即删除它们。
关于javascript - 允许 mlab 中的 RESTful DELETE 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51357973/