Как определить объект в node js - PullRequest
1 голос
/ 23 марта 2020

Я пытаюсь присвоить объекту значение, но при попытке отобразить его всегда возвращается []. вот фрагмент моего кода

const exspress = require("express");
const aplication = exspress();
//body parser for informaton monggo
const bodyparser = require("body-parser");
//configuration for node aplication
aplication.use(
  bodyparser.urlencoded({
    extended: false
  })
);
const mongose = require("mongoose");

const router = exspress.Router();

const PingModel = mongose.model("Ping");

const ping = require("ping");
var tcpp = require("tcp-ping");     
var obj = Array();
        var a = 0;
        var b = pingtime;
        for(a; a<b; a++){
        ping.promise.probe(host).then(function(data) {
            const storePing = new PingModel();
            storePing.hostPing = host;
            storePing.hostIp = data.numeric_host;
            if (data.alive) {
              storePing.hostStatus = "Ok";
            } else {
              storePing.hostStatus = "Not_ok";
            }
            if (data.alive) {
              storePing.hostLatency = "true";
            } else {
              storePing.hostLatency = "false";
            }
            storePing.save();
            window.obj = storePing
            // return this.obj[a] = storePing;
          });
          console.log(obj);
        }
 module.exports = router;

Можете ли вы, ребята, сказать мне, как определить объект и заполнить его данными / значением, чтобы я использовал его в отдельном коде / функции?

1 Ответ

0 голосов
/ 23 марта 2020

попробуйте изменить window.obj на obj, поскольку ваш obj является только переменной, он не относится к window объекту

, также, когда вы объявляете ваш объект, вы объявили его как Массив. Если вам нужен объект, вы можете использовать var obj = {};, хотя в любом случае вы переназначаете его с помощью storePing

, вам необходимо переместить console.log в обратный вызов then обещания, так как у вас есть асинхронный c код - в данный момент ваш console.log сработает до выполнения обратного вызова then обещания, и, таким образом, obj еще не будет иметь ожидаемого вами значения

что-то длинное строчки -

const router = exspress.Router();

const PingModel = mongose.model("Ping");

const ping = require("ping");
var tcpp = require("tcp-ping");     
var obj = {}; // NOTE, object instead of array, though this gets reassigned anyway, so doesn't really matter
        var a = 0;
        var b = pingtime;
        for(a; a<b; a++){
        ping.promise.probe(host).then(function(data) {
            const storePing = new PingModel();
            storePing.hostPing = host;
            storePing.hostIp = data.numeric_host;
            if (data.alive) {
              storePing.hostStatus = "Ok";
            } else {
              storePing.hostStatus = "Not_ok";
            }
            if (data.alive) {
              storePing.hostLatency = "true";
            } else {
              storePing.hostLatency = "false";
            }
            storePing.save();
            obj = storePing // <-- NOTE, no window object

            console.log(obj); // <-- NOTE, logging inside the then callback
            // return this.obj[a] = storePing;
          });
        }
 module.exports = router;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...