You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用mLab API的PUT请求获取更新后对象的技术咨询

如何通过mLab API获取AJAX PUT更新后的对象?

嘿,我知道你已经成功用mLab API完成了对象更新,现在就差拿到更新后的完整文档对吧?这其实是mLab API的默认行为导致的——它的PUT请求默认返回的是更新操作的统计信息(比如修改了多少条记录),而不是更新后的对象本身。不过有两种简单的方法可以解决这个问题:

方法1:使用returnNewDocument参数(推荐)

mLab的API支持MongoDB的returnNewDocument参数,只要在请求URL里加上&returnNewDocument=true,接口就会直接返回更新后的完整对象,不用额外发起请求。

修改后的代码如下:

// 先把email取出来,避免重复调用localStorage
const userEmail = localStorage.getItem("email");
// 用JSON.stringify生成查询参数,避免字符串拼接的语法问题
const query = JSON.stringify({ email: userEmail, restore: 'yes' });
const updateObject = { "$set": { restore: "no" } };

$.ajax({
  url: `https://api.mongolab.com/api/1/databases/db/collections/coll?apiKey=apiKey&q=${query}&returnNewDocument=true`,
  data: JSON.stringify(updateObject),
  type: "PUT",
  contentType: "application/json"
}).done(function(updatedObj) {
  console.log("更新后的完整对象:", updatedObj);
});

这里额外优化了两点:

  • 用JSON.stringify生成查询参数,避免手动字符串拼接可能出现的语法错误(比如特殊字符转义问题)
  • 用模板字符串拼接URL,可读性更好

方法2:更新后发起GET请求获取最新对象

如果因为某些原因无法使用returnNewDocument参数,你可以在更新成功后,立即发起一个GET请求,用相同的查询条件(比如用户的email)去获取最新的对象。这种方法需要两次请求,不如第一种高效,但也是可行的方案:

const userEmail = localStorage.getItem("email");
const query = JSON.stringify({ email: userEmail, restore: 'yes' });
const updateObject = { "$set": { restore: "no" } };

$.ajax({
  url: `https://api.mongolab.com/api/1/databases/db/collections/coll?apiKey=apiKey&q=${query}`,
  data: JSON.stringify(updateObject),
  type: "PUT",
  contentType: "application/json"
}).done(function(updateResult) {
  // 更新成功后,发起GET请求获取最新对象
  return $.ajax({
    url: `https://api.mongolab.com/api/1/databases/db/collections/coll?apiKey=apiKey&q=${JSON.stringify({ email: userEmail })}`,
    type: "GET",
    contentType: "application/json"
  });
}).done(function(updatedObj) {
  console.log("更新后的完整对象:", updatedObj);
});

总结:优先选择方法1,一次请求就能拿到更新后的对象,既高效又简洁。

内容的提问来源于stack exchange,提问作者Jasdeep Singh Chhabra

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 08:17:11