尝试通过Node.js中的元素索引将对象从数组导出到数组时,值未定义

阿里娜S.

最初,我在文件内部有一个空数组,但是在执行代码期间,我从数据库中获取数据并将数据推入数组。我的代码如下所示:

items.js

const items = [];

const init = (connection) => {
  return connection.collection('collectionName')
    .aggregate([{
      ....
    
    }])
    .toArray()
    .then(result => {
      items.push(...result);
      return result;
    });     
};

module.exports = {
  init,
  all: items,
  item1: items[0],
  item2: roles[1],
};

当我尝试全部导入时,使用require在类似这样的不同文件中导入item1和item2:

const { all, item1, item2 } = require('../data/items');

我得到了所有带有对象的数组,但未获得item1和item 2的定义。我似乎无法理解问题所在。我知道我可以在导出时使用匿名函数并以这种方式获取数据,但是我宁愿通过尝试按元素索引从数组访问数据来做到这一点。非常感谢所有帮助!

昆汀

我得到了所有对象的数组

有了该代码,您就不应该这样做。大概您init在某个时候打电话了。

但是对于item1和item 2不确定。我似乎无法理解问题所在。

在阅读items[0]以将其分配给要导出的对象时,异步功能尚未完成,因此该数组仍为空数组。

可以item1用一个getter代替,该getter在您尝试读取属性会获取当前,但是这可能仍然会使items[0]陷入竞争状况。item1

更好的解决方案可能是在提取完成后导出一个评估为对象promise

显然,您将需要使用then()await导出的值。您不会直接从中获取对象import

const init = async (connection) => {
    const items = await connection.collection('collectionName')
    .aggregate([{
      ....
    
    }])
    .toArray()
    return {
        all: items,
        item1: items[0],
        item2: roles[1], // whatever roles is
    }
};

module.exports = init();

const promise = require('../data/items');
const { all, item1, item2 } = await promise;

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

通过在Vue.JS中的变量中写入的索引获取数组元素时未定义

尝试将对象推入数组,数组未定义

React JS,尝试从数组中获取第一个值时未定义错误未定义

尝试按索引访问 Map 的数组值时出现未定义错误

Angular:尝试按索引从数组中获取对象,但出现未定义错误

尝试调用数组中的对象,返回未定义

从数组返回值时获取未定义 - Node JS

尝试通过requirejs加载时返回的值未定义

尝试通过node-sass @use sass变量时出错

TypeError:尝试读取通过props传递的数组时,无法读取未定义的属性“ map”

尝试将结果从 JSON 获取到数组时未定义的索引

当 Node.js 尝试从 react 文件中读取导出默认变量时,windows 未定义(node.js 读取 react 文件)

当我尝试获取它的特定元素时,反应数组返回未定义

为什么我在尝试访问通过 ajax 返回的 json 数据中的值时未定义

尝试从道具迭代对象数组但未定义(反应)

导出函数中Node.js中响应正文的未定义值。

尝试插入数组时未定义的推送

尝试在Node.js中实现连接池时连接变得未定义

通过数组索引将对象从数据传递到Vue.js中的组件

尝试从数组访问信息时,React JS返回未定义

尝试映射 React 中的对象数组,返回未定义

TypeError:尝试在数组中调用foo时未定义

尝试从文本框中获取值时未定义的数组键

尝试访问MongoDB结果obj中的数组时始终具有未定义的

通过 JSON 数组时获得“未定义”结果

尝试计算对象中的价格时未定义

未定义的值。尝试通过获取设置ID

尝试通过 id 时未定义的方法

数组中的未定义条目在通过`every`解析为布尔值后返回`true`。