如何在mongodb中存储下载的文件本地URL

时间:2019-08-30 11:34:34

标签: mongodb react-native

我想将下载文件的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;
}

1 个答案:

答案 0 :(得分:0)

这里的问题是您的网址存储在纯文本字段中。您需要将它们存储在一个数组中,而不是使用$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"
    ]
}