当前位置: 首页 > 知识库问答 >
问题:

POST后Express js MongoDB返回对象

章海
2023-03-14

如何在Express js中从数据库中取回对象?当我执行POST请求时,我只返回状态201,而不是响应中的对象。

按照下面的方式,它返回一个空的res.data字段,而不是对象。

router.post('/', async (req, res) => {
  const websites = await loadWebsitesCollection();
  await websites.insertOne({
    title: req.body.title,
    url: req.body.url,
    cms: req.body.cms,
    fw: req.body.fw,
    user: req.body.user,
    createdAt: new Date()
  });
  //TODO Need to get the response from the post request
  res.status(201).send();
  res.status(404).send('Sorry, we cannot find that!');
  res.status(500).send({ error: 'something blew up' });
})

要将所有对象恢复到数组中,我可以这样做:

res.send(await websites.find({}).toArray());

共有2个答案

洪宏硕
2023-03-14

好的,你可以这样试试

    try{let websites = await loadWebsitesCollection.insertOne({
title: req.body.title,
url: req.body.url,
cms: req.body.cms,
fw: req.body.fw,
user: req.body.user,
createdAt: new Date() });;
res.send(websites );}catch(e){res.status(400).send(e)}

还是这样

        try{var websites = new loadWebsitesCollection({
title: req.body.title,
url: req.body.url,
cms: req.body.cms,
fw: req.body.fw,
user: req.body.user,
createdAt: new Date()})var reswebsites  = await websites .insertOne(); res.send(reswebsites );}catch(e){res.status(400).send(e)}
苏鸿才
2023-03-14

在mongoDBinsertOne中,方法返回一个文档,其中包含确认的true,当前插入的id(ObjectId)为insertedId。因此,您可以将来自mongoDB的响应存储在一个变量中,如果找到任何insertedId,您可以从mongoDB查询数据或从请求体准备数据

...
const insertion = await websites.insertOne({
  title: req.body.title,
  url: req.body.url,
  cms: req.body.cms,
  fw: req.body.fw,
  user: req.body.user,
  createdAt: new Date()
});
let data = {};
if (insertion.acknowledged) {
  // ... prepare the data
  data = await websites.findOne({_id: insertion.insertedId});
}

... 

res.send(data);

 类似资料:
  • 我开始进入WP开发,我有问题与ACF后对象返回空,我不知道为什么。我创建了一个ACF,分类法的位置等于类别然后字段设置为... 字段名称:推荐的\u资源 然后在岗位上 我得到了无效的任何帮助或指向正确的方向都是非常感谢的。

  • 我必须做一个帖子,但我得到错误405 在本网站->http://177.66.89.34:8079/transparencia/#我需要迭代页面顶部的2个下拉菜单的选项。 首先,我会在“escolha o exercício”旁边加上选项:然后,我会在“escolha a entidade”旁边加上选项: 用下面的代码,我在“EscolhaoExercício:”上面写了一篇文章 我希望在pars

  • 问题内容: 我正在使用RESTlet,并且已经创建了资源。我通过覆盖方法处理POST 。 客户端应该向我发送一些数据,然后将其存储到DB,将响应设置为201(SUCCESS_CREATED),我需要向客户端返回一些数据,但是返回类型为。 就我而言,我需要返回一些标识符,以便客户端可以访问该资源。 例如,如果我有一个带有URL的资源,并且客户端发送了POST请求,则在DB中添加一个新行,其地址应为。

  • 问题内容: 我一直在尝试发布两个参数…这是ajax代码 方法 问题是ajax正确地发布了“ aracid”,但是当触发该方法时,“ kisi”变成了空…我尝试不发布带有“ kisi”的“ aracid”,所以ajax对于一个参数“ kisi”很好地发布了,但是不能一起工作… 问题答案: 如果要序列化表格,则可以使用函数向其添加其他值

  • 我正在尝试使用Go语言向我的(magento)网络服务器发出请求。 我设法发出了一个POST请求,但是,我没有得到与从cmd使用CURL时相同的响应。我关注了这篇文章(如何在Golang中获取JSON响应),它没有给我任何响应。 所以我试了这个 这只是像这样返回http响应 当使用< code > curl-g-X POST " my . dev/index . PHP/rest/V1/guest

  • 我试图使用Spring Boot在两个服务之间创建通信,但我无法从POST返回自定义对象。 我已经尝试过类似 第一次保养: 第二服务: 问题是,我收到一条错误消息,说Bid类“无法从对象值反序列化”,这使我认为拍卖正在发送,但出价没有返回。 我也不确定拍卖的序列化是如何进行的,因为我只放了“@RequestBody”,它就开始工作了。拍卖类内部甚至有一个出价对象,但这似乎不是问题。 完整的堆栈跟踪