Javascript 调用时对象 returns 为空
Javascript Object returns empty when called
一段我的代码
const channels = fauna.paginate(q.Match(q.Index("channels"), "true")) // Query FaunaDB database for channel list => create constant called users containing results
const channelList = channels.each(function (page) {
// Logs the page's contents,
// for example: [ Ref(Collection("test"), "1234"), ... ]
console.log(page);
});
工作正常并且表现得像它应该的那样。但是,当我尝试从代码中的其他地方调用“channelList”时,它 returns {}
第一段代码中的 console.log returns 也是应该的,所以我认为第一段代码没有任何问题。
这是我尝试调用此对象的一段代码
let options = {
options: {
debug: config.twitchConfig.options.debug
},
connection: {
reconnect: config.twitchConfig.options.reconnect,
secure: config.twitchConfig.options.secure
},
identity: {
username: config.twitchConfig.connection.username,
password: config.twitchConfig.connection.password
},
channels: [JSON.stringify(channelList)] // Attempt to call here, Returns {} (Empty object)
};
有什么我想念的吗?这甚至有可能吗?如果不可能,我可以使用什么方法来达到相同的结果?
编辑:据我所知,channelList 是基于页面响应的,而且页面响应似乎是该函数私有的,不能在函数外部引用。我该怎么做才能使其在函数外部可引用或创建一个可以在包含相同信息的函数外部访问的 constant/variable
channelList 不是一个函数,更像是一个打印通道的函数的结果..所以在打印分配给它的内容之后就是结果..
尝试将其假设为一个函数然后调用它:
const channelList = ()=>{
channels.each(function (page) {
// Logs the page's contents,
// for example: [ Ref(Collection("test"), "1234"), ... ]
console.log(page);
});
};
channelList();
假设代码本身做你想做的,这应该做的工作
经过多次试验和错误后,我的回答比我或与我交谈过的任何其他人的想法都要简单。
如果您遇到与我相同的问题,这里有关于如何自行解决问题的分步指南。
- 使用变量而不是常量
- 通过将
var channelList;
放置在设置它的代码上方的某处,在设置它之前声明您的变量
- 用简单的
channelList = page
设置先前声明的变量
console.log(channelList);
只是为了确保一切正常
- 最后,在你想要的地方调用变量,瞧!您已正确调用变量,但它没有 return {} 或 Undefined 或 [Object Object]
一段我的代码
const channels = fauna.paginate(q.Match(q.Index("channels"), "true")) // Query FaunaDB database for channel list => create constant called users containing results
const channelList = channels.each(function (page) {
// Logs the page's contents,
// for example: [ Ref(Collection("test"), "1234"), ... ]
console.log(page);
});
工作正常并且表现得像它应该的那样。但是,当我尝试从代码中的其他地方调用“channelList”时,它 returns {} 第一段代码中的 console.log returns 也是应该的,所以我认为第一段代码没有任何问题。
这是我尝试调用此对象的一段代码
let options = {
options: {
debug: config.twitchConfig.options.debug
},
connection: {
reconnect: config.twitchConfig.options.reconnect,
secure: config.twitchConfig.options.secure
},
identity: {
username: config.twitchConfig.connection.username,
password: config.twitchConfig.connection.password
},
channels: [JSON.stringify(channelList)] // Attempt to call here, Returns {} (Empty object)
};
有什么我想念的吗?这甚至有可能吗?如果不可能,我可以使用什么方法来达到相同的结果?
编辑:据我所知,channelList 是基于页面响应的,而且页面响应似乎是该函数私有的,不能在函数外部引用。我该怎么做才能使其在函数外部可引用或创建一个可以在包含相同信息的函数外部访问的 constant/variable
channelList 不是一个函数,更像是一个打印通道的函数的结果..所以在打印分配给它的内容之后就是结果.. 尝试将其假设为一个函数然后调用它:
const channelList = ()=>{
channels.each(function (page) {
// Logs the page's contents,
// for example: [ Ref(Collection("test"), "1234"), ... ]
console.log(page);
});
};
channelList();
假设代码本身做你想做的,这应该做的工作
经过多次试验和错误后,我的回答比我或与我交谈过的任何其他人的想法都要简单。
如果您遇到与我相同的问题,这里有关于如何自行解决问题的分步指南。
- 使用变量而不是常量
- 通过将
var channelList;
放置在设置它的代码上方的某处,在设置它之前声明您的变量 - 用简单的
channelList = page
设置先前声明的变量
console.log(channelList);
只是为了确保一切正常- 最后,在你想要的地方调用变量,瞧!您已正确调用变量,但它没有 return {} 或 Undefined 或 [Object Object]