首页 > 解决方案 > 如何在mongodb中存储下载的文件本地url

问题描述

我想将下载文件的 url 路径存储在 mongodb 中,以便以后可以使用该路径在我的应用程序中打开文件。

我试图存储,但问题是每当我下载新文件时,它都会与前一个文件更新。

这是后端代码

router.post('/download',function (req, res) {
  console.log(req.body)
  User.updateOne({_id:req.body.userid},{$set:{downloadurl:req.body.downloadurl
  }}).then((user)=>{
    console.log(user);
    res.status(200).send({
  data:user,
  message:'success'
})
  }).catch((err)=>{
   console.log(err)
    res.status(500).send({
      data:err,
      message:'not success'
    })
  })

});

这是ui的后端

export async function DownloadUrl(data) {

   let result = await fetch(url + 'user/download', {
      method: 'POST',
      body: JSON.stringify(data),
      headers: {
         Accept: 'application/json',
         'Content-Type': 'application/json',
      }
   }).then(response => response.json());

   console.log(result);
   return result;
}

标签: mongodbreact-native

解决方案


这里的问题是您的网址被存储在纯文本字段中。您需要将它们存储在一个数组中,而不是使用$set,这将覆盖以前的数据,开始使用$push,它将数据附加到您的 url 数组:

router.post('/download',function (req, res) {
    console.log(req.body)
    User.updateOne(
        {_id:req.body.userid},
        {$push:{download_urls:req.body.downloadurl}}
    ).then((user)=>{
        console.log(user);
        res.status(200).send({
            data:user,
            message:'success'
        })
    }).catch((err)=>{
        console.log(err)
        res.status(500).send({
            data:err,
            message:'not success'
        })
    })
});

这样,您最终将得到User如下文件:

{
    "_id": "some_id_value",
//  [...]
    "dowload_urls": [
        "someurl1",
        "someurl2",
        "someurl3"
    ]
}

推荐阅读