Javascript 如何在NodeJS中定义对象
我试图给对象赋值,但当我试图显示时,它总是返回Javascript 如何在NodeJS中定义对象,javascript,node.js,express,Javascript,Node.js,Express,我试图给对象赋值,但当我试图显示时,它总是返回[]。 这是我的一段代码 const exspress = require("express"); const aplication = exspress(); //body parser for informaton monggo const bodyparser = require("body-parser"); //configuration for node aplication aplication.use( bodyparser.ur
[]
。
这是我的一段代码
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;
const exspress=require(“express”);
const-application=exspress();
//informatonmonggo的主体解析器
const bodyparser=require(“body parser”);
//节点应用的配置
应用(
bodyparser.urlencoded({
扩展:false
})
);
const mongose=require(“mongose”);
const router=exspress.router();
常量PingModel=mongose.model(“Ping”);
常量ping=要求(“ping”);
var tcpp=需要(“tcp ping”);
var obj=数组();
var a=0;
var b=时间;
对于(a;a请尝试将window.obj
更改为obj
,因为您的obj
只是一个变量,它不在window
对象上
另外,在声明对象时,您已经将其声明为数组。如果您想要一个对象,您可以使用var obj={};
,尽管您仍然使用存储重新分配它
此外,您需要将控制台.log
移动到承诺的回调中,然后
回调,因为这是您拥有的异步代码-此时,您的控制台.log
将在承诺的回调执行之前触发,因此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;
const router=exspress.router();
常量PingModel=mongose.model(“Ping”);
常量ping=要求(“ping”);
var tcpp=需要(“tcp ping”);
var obj={};//注意,对象而不是数组,尽管这会被重新分配,所以并不重要
var a=0;
var b=时间;
对于(a;a请尝试将window.obj
更改为obj
,因为您的obj
只是一个变量,它不在window
对象上
另外,在声明对象时,您已经将其声明为数组。如果您想要一个对象,您可以使用var obj={};
,尽管您仍然使用存储重新分配它
此外,您需要将控制台.log
移动到承诺的回调中,然后
回调,因为这是您拥有的异步代码-此时,您的控制台.log
将在承诺的回调执行之前触发,因此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;
const router=exspress.router();
常量PingModel=mongose.model(“Ping”);
常量ping=要求(“ping”);
var tcpp=需要(“tcp ping”);
var obj={};//注意,对象而不是数组,尽管这会被重新分配,所以并不重要
var a=0;
var b=时间;
对于(a;abtw)我想控制台.log(obj)我定义了var 0bj=Array();window.obj=storeing
什么是window
?试图定义为全局对象,但它不起作用。我想控制台.log(obj)我定义了var 0bj=Array();window.obj=storeing
什么是window
?试图定义为全局对象,但它没有返回“{}”哥们,我不知道为什么?或者是因为我正在尝试分配内部for循环和内部ping.promise.probe函数?我想你需要等待一些东西。你能用你最新的代码更新你的问题吗?或者如何存储。然后返回一个变量/对象?它的返回“{}”哥们,我不知道为什么?或者是因为我正在尝试分配内部for循环和内部ping.promise.probe函数?我想你需要等待一些东西。你能用你最新的代码更新你的问题吗?或者如何存储。然后返回到变量/对象吗?