Создать глобальную переменную в utils. js файл в node.js - PullRequest
1 голос
/ 07 января 2020

Привет Я сейчас пытаюсь понять, как правильно определить глобальную переменную в node.js. Я знаю, что это не очень хорошая практика, но в данном конкретном сценарии это единственный способ сделать это без использования подключения к базе данных.

Я получаю данные из github API для отображения некоторой информации, я пытаюсь сохранить их в глобальной переменной. Это должно позволить мне, например, передать указанный c объект из первого глобального списка в новый глобальный список, который отображает только выбранные элементы.

У меня есть файл с именем utils. js, у которого есть эти два пустых массива, которые должны быть глобальными:

let repoItems = [];
let bookmarkedItems = [];

exports.repoItems = repoItems;
exports.bookmarkedItems = bookmarkedItems;

Затем у меня есть другой файл, который выбирает и должен назначать элементы первому глобальному переменная, но похоже, что нет. Потому что в тот момент, когда я пытаюсь выбрать один элемент & pu sh во второй пустой массив, это невозможно, я получаю пустой массив. Я не уверен, что ошибка допущена из-за плохой реализации глобальной переменной из другого файла или из-за чего-то еще: /

Ниже я включаю извлекающую часть кода жирной частью, с которой я запутался :

let utils = require('../utils');

let {
    repoItems,
} = utils;

router.get('/', async (req, res) => {
    try {
        const result = await fetchGithubAPI(`searching word`);
        const urls = result.map(url => url);
        console.log(urls);
        res.render('repositories.ejs', {
            'data': urls
        });
    } catch (e) {
        console.log(e);
    }
});

async function fetchGithubAPI(search) {
    const response = await fetch(`https://api.github.com/?q=${search}`, {
        method: 'GET',
        headers: {
            'Accept': 'application/vnd.github.v3+json',
            'Content-Type': 'application/json',
        },
    });
    const data = await response.json();
    **repoItems = data.items.map(item => item);**
    return repoItems;
}

Ответы [ 2 ]

0 голосов
/ 07 января 2020

если вы удалите

let {
repoItems,

} = utils;

вы можете попробовать использовать utils.repoItems = data.items.map (item => item)

Я попробовал пример установки для него

- utils. js

module.exports.someValue = 3; module.exports.setSomeValue = (value) => {someValue = value}

- index. js

const utils = require('./utils'); 

console.log(utils.someValue);// 3
utils.someValue = 5
console.log(utils.someValue);// 5 

Обновление после знания методов получения и установки в Js Вы можете обратиться к https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/set, это еще один способ изменить значение любых частных свойств в JS

0 голосов
/ 07 января 2020

Попробуйте:

let repoItems = require('./utils').repoItems

вместо

let {
    repoItems,
} = utils;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...