尝试使用postman更新我的Express数据库

wz8daaqr  于 2022-11-07  发布在  Postman
关注(0)|答案(1)|浏览(225)

如何使用Postman更新我的数据库?
我试图学习Express使用Postman测试不同类型的请求,但是我不知道如何更新我的数据集。这是我使用的数据集的结构。

var DB = [     
{ category: 'Pets',  
 products: [              
{ name: 'banjo',    
color: 'grey',     
mean: true,    
description: "meows"              
},              
{ name: 'rigby',  
color: 'black and white',  
mean: false,  
description: 'barks'              
}]}] 
Lets say I want to add another pet into the pets category so in products

{name: frank, color: orange, : mean: false: description: glubs}

我不知道如何在Postman中正确地添加它,以便它更新。我的更新代码如下:

app.post("/product/add", (req, res) => {    
 var category = req.body.category;     
const { name, color, mean, description } = req.body;     
var product = { name:name,  color:color, mean:mean, description:description };     console.log(product);     
var index = DB.findIndex(x => x.category == category);     
if(index !== -1){         
var indexProduct = DB[index].products.findIndex(x => x.name == product.name);         if(indexProduct !== -1){            
DB[index].products.push(product);            
res.status(200).send(DB);         
} else {            
 res.status(200).send(`Product already added to category.`);         
};     
} else {         
res.status(200).send(`Category not found.`);     
} });

提前感谢!也很抱歉的格式。

zz2j4svz

zz2j4svz1#

在你的代码中有很多重复、不需要的结构化变量和语法错误。首先把你的问题分解成更容易管理的小块,然后用postman测试你的端点。
让我们从您的数据及其结构开始:

var DB = [{
category: 'Pets',
products: [{
        name: 'banjo',
        color: 'grey',
        mean: true,
        description: "meows"
    },
    {
        name: 'rigby',
        color: 'black and white',
        mean: false,
        description: 'barks'
    }
  ]
}]

//假设您要将另一个宠物加入pets类别,因此在products中

const obj = {
    name: "frank",
    color: "orange",
    mean: false,
    description: "glubs"
}

这是您可以检查是否未找到对象的方法之一,如果未找到,则将其添加到数据库中。

DB.forEach((val) => {
   if (val.products.name !== obj.name) {
       DB[0].products.push(obj);
   } 

})

console.log(DB[0].products)

/**
 *[{
         name: 'banjo',
         color: 'grey',
         mean: true,
         description: 'meows'
     },
     {
         name: 'rigby',
         color: 'black and white',
         mean: false,
         description: 'barks'
     },
     {
         name: 'frank',
         color: 'orange',
         mean: false,
         description: 'glubs'
     }
 ]

* /

您的 Postman 请求可能如下所示:

app.post("/product/add", (req, res) => {  
  // extract just what you need e.g name or ID if you have one...  
  const { name } = req.body;   
  // NOT efficient, best if you use a unique ID to look up  
  DB.forEach(value => {
     if (value.products.name !== name) {
        DB[0].products.push(req.body);
        return res.status(200).send(JSON.stringify(DB));
     }
     else
        return res.status(404).send("Not found or whatever");
  });
 });

或者使用Array.prototype.findIndex可以执行以下操作:

app.post("/product/add", (req, res) => {   
  const { name } = req.body;   
  const index = DB.forIndex(value => value === name);
  if (index === -1) {
    DB[0].products.push(req.body);
    return res.status(200).send(JSON.stringify(DB));
  }

  else
    return res.status(404).send("Not found or whatever");
  }
 });

注意:如果你的对象名与另一个相同,你的新对象将不会被推送到DB数组。这意味着你需要用一个唯一的标识符来索引你的对象。

相关问题