angular - Angular 请求数据丢失
问题描述
我的 Angular 项目有一个小问题。
当我从前端发出 Get 请求时,有时我的请求是完美的,有时却不是。举个例子:
当我要求这个时:
[HttpGet("fromfor/{userId}")]
public async Task<ActionResult<IEnumerable<MessageDTO>>> GetMessagesFromForUsers(int userId)
{
var messages = await _context.Messages.ToListAsync();
var messagesToReturn = new List<Message>();
var destinations = await _context.Destinations.ToListAsync();
if (messages == null)
return NotFound();
else
{
foreach (Message m in messages)
{
if (m.AuthorId == userId)
messagesToReturn.Add(m);
}
}
if (destinations == null)
return NotFound();
else
{
foreach (Destination d in destinations)
{
if (d.UserId == userId)
{
var mess = await _context.Messages.Where(m => m.Id == d.MessageId).FirstOrDefaultAsync();
messagesToReturn.Add(mess);
}
}
}
return messagesToReturn.ToDTO();
}
有了这项服务:
getMessagesFromForUsers(userId: number) {
return this.http.get<Message[]>(`${this.baseUrl}api/messages/fromfor/${userId}`).pipe(
map(res => res.map(m => new Message(m))));
}
一切都很好,我把所有的数据都发回了前面。(见最后的照片)
但是当我要求:
[HttpGet("{id}")]
public async Task<ActionResult<MessageDTO>> GetOne(int id)
{
var mess = await _context.Messages.Where(m => m.Id == id).FirstOrDefaultAsync();
if (mess == null)
return NotFound();
return mess.ToDTO();
}
有了这项服务:
getMessageById(id: number) {
return this.http.get<Message>(`${this.baseUrl}api/messages/${id}`).pipe(
map(m => !m ? null : new Message(m)),
);
}
我从后端丢失了一个数据。它的目的地属性....
我试图理解,但现在超出了我的能力范围,我在这里找不到任何类似的东西可以帮助我......
我可以使用更多的代码行或一些屏幕来显示我的模型和 DTO 的情况,但要阅读的内容很多。
非常感谢您的阅读,也许对我有帮助!
解决方案
如果您想在请求消息时填写目的地,则需要将其明确包含在查询中:
var mess = await _context
.Messages.Include(r=> r.Destinations)
.Where(m => m.Id == id)
.FirstOrDefaultAsync();
推荐阅读
- typescript - Vuex Typescript 我收到错误“成员 'someMutation' 隐含地具有 'any' 类型。” 在 Component.ts 文件中
- identityserver4 - IdentityServer4 添加 IdentityClaim
- python - 根据我的 df 在 for 循环中的长度重复数组的行 N 次不起作用。错误“numpy.ndarray”对象不可调用”(Python)
- android - 无法将匹配图像的结果用于下一个活动
- php - facebook php api 参数“place”必须是有效的地点标签 ID
- jquery - 在 jQuery 中更改提交按钮的值不起作用
- android - Android UI 应该如何变化?密度 (DPI) 明智还是根据屏幕尺寸?要遵循的最佳实践?
- rabbitmq - Mass Transit 在轻负载下跳过命令
- java - 如何从arraylist中读取多个没有符号的整数?
- async-await - 异步等待其显示未定义