第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

嘗試通過 Node.js 中的元素索引從數(shù)組導(dǎo)出對(duì)象時(shí),值未定義

嘗試通過 Node.js 中的元素索引從數(shù)組導(dǎo)出對(duì)象時(shí),值未定義

一只名叫tom的貓 2024-01-18 10:52:17
最初,我在文件內(nèi)有一個(gè)空數(shù)組,但在代碼執(zhí)行期間,我從數(shù)據(jù)庫(kù)獲取數(shù)據(jù)并將數(shù)據(jù)推送到數(shù)組中。我的代碼如下所示:items.jsconst 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],};當(dāng)我嘗試在不同的文件中使用 require 導(dǎo)入所有 item1 和 item2 時(shí),如下所示:const { all, item1, item2 } = require('../data/items');我得到了包含 object 的數(shù)組,但 item1 和 item 2 未定義。我似乎不明白問題是什么。我知道我可以在導(dǎo)出時(shí)使用匿名函數(shù)并以這種方式獲取數(shù)據(jù),但我寧愿通過嘗試按元素索引訪問數(shù)組中的數(shù)據(jù)來實(shí)現(xiàn)。非常感謝所有的幫助!
查看完整描述

1 回答

?
倚天杖

TA貢獻(xiàn)1828條經(jīng)驗(yàn) 獲得超3個(gè)贊

我得到了帶有對(duì)象的數(shù)組

鑒于該代碼,您不應(yīng)該這樣做。init不過,想必您會(huì)在某個(gè)時(shí)候打電話。

但 item1 和 item 2 未定義。我似乎不明白問題是什么。

當(dāng)您讀取items[0]將其分配給要導(dǎo)出的對(duì)象時(shí),異步函數(shù)尚未完成,因此該數(shù)組仍然是一個(gè)空數(shù)組。

可以item1用一個(gè)getter來替換,該 getter 在您嘗試讀取該屬性時(shí)獲取當(dāng)前值,但這可能仍然會(huì)導(dǎo)致競(jìng)爭(zhēng)條件。items[0]item1

更好的解決方案可能是導(dǎo)出一個(gè)承諾,一旦獲取完成,該承諾將被評(píng)估為對(duì)象。

顯然,您需要在導(dǎo)出的值上使用then()or 。await您不會(huì)直接從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;


查看完整回答
反對(duì) 回復(fù) 2024-01-18
  • 1 回答
  • 0 關(guān)注
  • 118 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)