如何塑造回归数据?



在Postman中返回数据时,我接收到完整的用户信息,如密码哈希值和密码盐。我的想法是只返回他的用户名,这样它看起来像"user":";tom"没有他的数据。我应该使用自动装置吗?或者如何设置Dto来返回正确的数据。有什么建议吗?

public async Task < ActionResult < ProductDto[] >> AddProduct(string username,
ProductDto productDto) 
{
User u = await _context.Users
.Where(x => x.UserName == username)
.Include(x => x.Products)
.SingleOrDefaultAsync();
if (u != null) 
{
var product = new Product 
{
Name = productDto.Name,
Price = productDto.Price,
UserId = u.Id
};
u.Products.Add(product);
await _context.SaveChangesAsync();
}
return u.Products.ToArray();
}
public class Product : BaseEntity
{
public string Name { get; set; }
public decimal Price { get; set ;}
public User User { get; set; }
public int UserId { get; set; }
}
public class ProductDto
{
public string Name { get; set; }
public string Username { get; set; }
public decimal Price { get; set; }
}

邮差输出:https://i.stack.imgur.com/vNi7J.png

您正在返回Product对象的数组,但似乎您真正想要的是返回ProductDto对象的数组。

您可以使用下面的代码来构造ProductDto对象数组。插入if (u != null)检查后:

if (u != null)
{
var product = new Product 
{
Name = productDto.Name,
Price = productDto.Price,
UserId = u.Id
};
u.Products.Add(product);
await _context.SaveChangesAsync();
}
else
{
return new ProductDto[] {};
}
var productDtos = new ProductDto[u.Products.Count];
for (var i = 0; i < u.Products.Count; i++)
{
productDtos[i] = new ProductDto
{
Name = product.Name,
Username = product.User.UserName,
Price = product.Price
};
}
return productDtos;

或者,您可以使用LINQ:

if (u != null)
{
var product = new Product 
{
Name = productDto.Name,
Price = productDto.Price,
UserId = u.Id
};
u.Products.Add(product);
await _context.SaveChangesAsync();
}
else
{
return new ProductDto[] {};
}
var productDtos = u.Products
.Select(p => new ProductDto
{
Name = p.Name,
Username = p.User.UserName,
Price = p.Price
})
.ToArray();
return productDtos;

相关内容

  • 没有找到相关文章

最新更新