Разбор записи базы данных в SingalR Javascript Client - PullRequest
0 голосов
/ 20 мая 2019

Я изучаю ASP.NET Core SignalR. Я написал базовую программу в рамках MVC, которая взаимодействует с базой данных SQLite. Эта программа позволяет пользователю выполнять операции CRUD над базой данных. Я ввел в программу концентратор SignalR. Сервер периодически получает список записей из базы данных и отправляет клиенту функцию hub SendAsync. В клиенте-концентраторе Javascript я пытаюсь проанализировать (и отобразить) полученные сообщения. Все работает (получение списка элементов из базы данных, отправка через концентратор), кроме доступа к элементу элемента, я получаю сообщение undefined , хотя из базы данных извлекаются три элемента, для каждого элемента назначены действительные значения ,

Схема для базы данных (в папке Models ):

public class IenState
{
    public int Id { get; set; }   

    public ulong NetId { get; set; }
    public ushort NodeId { get; set; } 
}

Отправка сообщений от Север-конец концентратора:

var ienStates = from m in dbcontext.IenState select m;                           
var listdb = await ienStates.ToListAsync();  //here 3-items recovered
await hubContext.Clients.All.SendAsync("IenStateDb", listdb);

Javascript клиент-концентратор (с именем IenStateHub.js ):

const connection = new signalR.HubConnectionBuilder()
.withUrl("/ienStateHub")
.configureLogging(signalR.LogLevel.Information)
.build();

connection.start().then(function () {        
    document.getElementById("p_nets").innerHTML = "IenStateHub is   'CONNECTED'";               
});

connection.on("IenStateDb", function(message){      
  var dbitem; 
  for (dbitem in message) 
  {            
    document.getElementById("p_nets").innerHTML  = "NetId:" + dbitem.NetId;                
  }       
}); 

Где ' p_nets ' - это HTML-элемент в ' Index.cshtml '. Хаб-клиент (IenStateHub.js) добавляется в конец Index.cshtml следующим образом:

<script src="~/lib/signalr/signalr.js"></script>
<script src="~/js/IenStateHub.js"></script>

Любая помощь для решения этой проблемы анализа будет принята с благодарностью.

Ответы [ 2 ]

0 голосов
/ 20 мая 2019

Работает следующий метод:

$.each(message, function(index, obj) {
    console.log( index + ": " + obj );
    $.each(obj, function( key, value ) {
        console.log( key + ": " + value );
      });
 });

Это основано на одном из подходов, описанных в ссылке (упомянутой @ Roman Koliada ).

Теперь я не уверен, является ли это наиболее эффективным способом доступа к различным элементам в каждом элементе / объекте.

0 голосов
/ 20 мая 2019

Попробуйте это, чтобы проверить ваше сообщение на стороне клиента:

connection.on("IenStateDb", function(message) {  
  message.forEach(function(dbitem, index, array) {
     console.log(dbitem);//should output your db item into the browser console.
     //document.getElementById("p_nets").innerHTML  = "NetId:" + dbitem.NetId;  
  });
}); 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...