簡體   English   中英

如何使用mongoose更新用戶資料信息

[英]How to use mongoose to update user profile info

在客戶端,用戶可以通過表單更新他們的個人資料,其中數據通過 axios 發送到 nodejs express 后端。 我想使用 mongoose 來更新用戶信息。 這是我嘗試過的:

userRouter.post('/update/:username', (req, res) => {
  const update = {age: req.body.age, height: req.body.height, weight: req.body.weight, gender: req.body.gender}
  const filter = {username: req.params.username}
  User.findOneAndUpdate(filter, update, { new: true });
});

User上的findOneAndUpdate方法返回 promise 和另一種接受回調的風格。 您沒有通過任何導致此錯誤的內容。 您可以嘗試回調方法或下面編寫的一種方法。

userRouter.post('/update/:username', async (req, res) => {
    const update = {age: req.body.age, height: req.body.height, weight: req.body.weight, gender: req.body.gender}
    const filter = {username: req.params.username}
    const updatedDocument = await User.findOneAndUpdate(filter, update, { new: true });

    return res.status(200).send(updatedDocument);
  });

在 REST API 規范中更新服務器上的某些資源時,必須使用PATCHPUT方法進行請求。

您使用POST方法。

在這里你可以這樣做

首先,獲取用戶名並使用過濾器屬性在數據庫中搜索。 現在獲取req.body並應用更新的數據

app.patch('/update/:username', (req, res) => {
  //You can pass req.body directly or you can separate object
  const { age, height, weight, gender } = req.body;
  const { username } = req.params;
  const filter = { username : username }

  const updatedUser = await User.findOneAndUpdate(filter, req.body, { new: true }).catch(error => {
    return res.status(500).send(error);
  });

  return res.status(200).json({
    message : "Updated user",
    data: updatedUser
  });
});

這對我有用,首先創建架構然后將其導入您的文件。

import RegisterSchemaModel from '../schema/RegisterSchema.js';

router.post("/api/admin/epadmin",(req, res) => {
  const uData = {
    "name": req.body.name,
    "lname": req.body.lname,
    "mobile": req.body.mobile,
    "address":req.body.adddress,
    "city":req.body.city,
    "gender":req.body.gender
  }; // Data to be Updated 

  const cData = { "email": req.body.email }; // Conditional Data or Unqiue Key to fetch

  const updatedUser = RegisterSchemaModel.findOneAndUpdate(cData, uData,{new:true}).then((result) => {
    return res.send(result)
  }).catch(error => {
    return res.status(500).send(error);
  });

  return res.status(200).json({
    message : "Updated user",
    data: updatedUser
  });
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM