在github上运行的Javascript伪数据库

在github上运行的Javascript伪数据库,javascript,database,github,jwt,github-actions,Javascript,Database,Github,Jwt,Github Actions,我想在javascript中创建一个在Github上运行的假数据库 我正在考虑使用axios模拟适配器,我知道如何设置它,但不知道如何使它工作 也就是说,如果可能,我应该如何在Github上创建它周围的环境以使其工作 目前,我设法创建了以下结构: mock.js const MockAdapter = require('axios-mock-adapter'); const axios = require('axios'); const mock = new MockAdapter(axios

我想在
javascript
中创建一个在
Github
上运行的假数据库

我正在考虑使用axios模拟适配器,我知道如何设置它,但不知道如何使它工作

也就是说,如果可能,我应该如何在
Github
上创建它周围的环境以使其工作

目前,我设法创建了以下结构:

mock.js

const MockAdapter = require('axios-mock-adapter');
const axios = require('axios');

const mock = new MockAdapter(axios, { delayResponse: 0 });
export default mock;
index.js

import './db/auth-db';
import mock from './mock';

mock.onAny().passThrough();
./db/auth-db.js

import _ from '@lodash';
import jwt from 'jsonwebtoken';
import mock from '../mock';
/* eslint-disable camelcase */

const jwtConfig = {
    secret: 'some-secret-code-goes-here',
    expiresIn: '2 days' // A numeric value is interpreted as a seconds count. If you use a string be sure you provide the time units (days, hours, etc)
};

const authDB = {
    users: [
        {
            uuid: '08b6bf4161024491b71c397c36d8eb7d',
            password: 'admin',
            role: 'admin',
      email: 'leo@gmail.com',
            data: {
                displayName: 'Leonardo DiCaprio',
                photoURL: 'https://it.wikipedia.org/wiki/File:Leonardo_Dicaprio_Cannes_2019_2.jpg'
            }
        },
        {
            uuid: '77e83a5c0f414883b1655079491c278d',
            password: 'staff',
            role: 'staff',
      email: 'depp@gmail.com',
            data: {
                displayName: 'Johnny Depp',
                photoURL: 'https://upload.wikimedia.org/wikipedia/commons/thumb/7/79/Johnny_Depp_Deauville_2019.jpg/440px-Johnny_Depp_Deauville_2019.jpg'
        }
    ]
};

mock.onGet('/api/auth').reply(config => {
    const data = JSON.parse(config.data);
    const { email, password } = data;

    const user = _.cloneDeep(authDB.users.find(_user => _user.email === email));

    const error = {
        email: user ? null : 'Check your username/email',
        password: user && user.password === password ? null : 'Check your password'
    };

    if (!error.email && !error.password && !error.displayName) {
        delete user.password;

        const access_token = jwt.sign({ id: user.uuid }, jwtConfig.secret, { expiresIn: jwtConfig.expiresIn });

        const response = {
            user,
            access_token
        };

        return [200, response];
    }
    return [200, { error }];
});

Github是一个源代码管理网站,为什么要这么做?此外,您无法在github中托管适当的数据库,您最好使用github页面在那里托管网页,但同样,它们是静态网页,只有您的浏览器js能够在一个会话中访问它。即使您要使用github操作,它们也会在几个小时内超时,我怀疑您是否能够连接到它。@SamridhTuladhar,OP正在尝试使用github工作流自动化测试。不,我已经使用MongoDB自动化了我的数据库测试。超时应该不是问题。好吧,那么这个问题需要一些更正,这是非常误导的。是的,你是对的,如果你正在运行一些测试,它们可能不会很快超时。Github是一个源代码管理网站,你为什么要这么做?此外,您无法在github中托管适当的数据库,您最好使用github页面在那里托管网页,但同样,它们是静态网页,只有您的浏览器js能够在一个会话中访问它。即使您要使用github操作,它们也会在几个小时内超时,我怀疑您是否能够连接到它。@SamridhTuladhar,OP正在尝试使用github工作流自动化测试。不,我已经使用MongoDB自动化了我的数据库测试。超时应该不是问题。好吧,那么这个问题需要一些更正,这是非常误导的。是的,您是对的,如果您正在对它们运行一些测试,它们可能不会很快超时。