javascript - 允许 mlab 中的 RESTful DELETE 方法

标签 javascript database mlab

如何为 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/

相关文章:

ruby - Mongo::OperationFailure - 使用 from_uri 时需要登录

node.js - 未创建 Mongoose 复合索引(太长)

javascript - 将 PHP 数组值插入 JavaScript 数组?

javascript - 如何在 Angular 2 中为 jwt token 设置 cookie

javascript - Angular $http 成功弃用修正案

javascript - Expo 和 React Native 有什么区别?最新发布 2018

database - 将多条记录合并到表中的一行中

php函数保存文本输入同名变量分隔

php - 在表中显示 MYSQL 数据库中的数据(不单独)

node.js - 从 node.js 在 mongolab mongodb 数据库中创建集合模式