这数据库我白嫖定了!MemFire Cloud 平台数据库的使用攻略

1,202 阅读3分钟

前言

不知道大家会不会和我一样,间歇性的想做一些小东西,但苦于没有长期免费的服务器白嫖,很难搞。为了一时的兴起去买一个服务器又不太划算。不过近期发现一个不错的网站,给大家分享一下。

链接先送上 MemFire Cloud平台

简单介绍

字节跳动有个很赞的项目,叫做轻服务,它能让应用快速部署到服务器。不需要配置这个那个,只需要把代码一扔,它就会给你一个访问链接进行测试,如果自己有域名的话可以自己进行配置,用很简单的步骤就能完成建站,主打一个省时省力省资源。后续出了很多类似的玩意,诸如腾讯云的云函数,亦或是本文的 MemFire Cloud

不过本文不聚焦于怎么部署前后端,只是简单分享如何把它当做你的简单数据库来用,它提供了 500M 的数据库空间。

数据库与表创建

  1. 注册账号
  2. 创建一个免费的应用

image.png

  1. 创建项目后,可以在左侧找到 表编辑器sql编辑器,这是创建数据表的两种方案,sql 不好的建议使用表编辑器手动建立一个表即可。

image.png

image.png 至此,你的数据库已经安排上了,我们再来看看如何进行链接读取

数据库链接读取

  1. 先在本地起一个简单服务做测试,我以我的数据库中的mem 表为例。
const express = require('express');
const { createClient } = require('@supabase/supabase-js');

const app = express();
const port = 3000;

// 替换为你的 Supabase URL 和 Key
const supabaseUrl = 'xxxxxxxxxxxxxxx.com'
const supabaseKey = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx';

const supabase = createClient(supabaseUrl, supabaseKey);

// 查询 mem 表中的数据
app.get('/query', async (req, res) => {
    try {
        const { data, error } = await supabase
            .from('mem')
            .select('*');

        if (error) {
            console.error('链接错误:', error);
            throw error;
        }

        console.log('读取到:', data);
        res.status(200).json(data);
    } catch (error) {
        console.error('执行中出现错误', error.message);
        res.status(500).json({ error: error.message });
    }
});

app.listen(port, () => {
    console.log(`Server is running on http://localhost:${port}`);
});

注意到,代码中supabaseUrlsupabaseKey是需要自己填充的,我们需要到 设置=>api 中找到

image.png

  1. 这时候启动服务,并进入 http://localhost:3000/query (注意我代码中有query路径),应该能打通请求,并返回一个空数组

  2. 我们向表中插入任意条数据,会发现仍然是空数组。此时的空数组,实际上意味着没有权限无法读取,我们需要写入一个权限策略,按官网提供的例子进行写入:

alter table public.mem enable row level security;

-- 启用对所有用户的查询数据访问
create policy "Enable access to all users" on public.mem for
select using (true);

-- 启用对所有用户的插入数据访问
create policy "Enable insert for all users" on public.mem for
insert with check (true);

-- 启用对所有用户的修改数据访问
create policy "Enable update for all users" on public.mem for
update using (true) with check (true);

image.png

  1. 再跑一下接口,发现可以正常读取到数据了,大功告成。

image.png

总结

已经跑通了查,那么后续的增删改也并不困难,根据文档自行摸索就好了。既然大家看到这里,想必也是白嫖上数据库了,这不点赞收藏一下以防用到的时候想不起来吗!