V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
OkabeRintaro
V2EX  ›  问与答

大佬们,如何在没有服务器数据库的情况下,做到增删改查

  •  
  •   OkabeRintaro · 2023-01-12 10:32:05 +08:00 · 3306 次点击
    这是一个创建于 432 天前的主题,其中的信息可能已经有所发展或是发生改变。

    --前端菜鸟一枚,不懂后端,最近写了个背单词的表格网页,可以打钩打叉,记录自己哪里记住了没有
    然后,把这个网页托管在了 github 上面

    --现在想实现这样一个功能,我在 A 电脑背诵完了做好了记录,我想在 B 电脑打开这个网页,能够同步我上次的背单词打钩打叉记录,并且有保存上传新的数据记录的功能

    --我没有服务器 /数据库,请问有什么路子能够做到这个吗?

    --或者线上的 fastMock 、EasyMock 能够做到 [我上传新数据过去,替换之前旧的内容,以及之后我重新获取的数据是最新的数据] 的这个操作吗?

    第 1 条附言  ·  2023-01-12 11:57:40 +08:00
    第 2 条附言  ·  2023-01-13 09:25:27 +08:00

    目前是怎么一回事:
    --每次更新保存出来的是字符串,这个字符串长达 50w 字,其实就是一个 json 数据,只是我把他纯文本输出保存了
    --每次新电脑打开这个网址,网页就开始检测有无本地历史记录,有就调取这个历史记录,没有就弹出输入框让用户输入之前保存的字符串。
    --终极目的:希望用户能只在网页上进行所有的操作,不需要再下载其他什么软件,来进行额外操作,就能多设备同步最新数据。

    50 条回复    2023-01-13 15:00:39 +08:00
    christin
        1
    christin  
       2023-01-12 10:34:24 +08:00
    sqlite ,数据库文件就存在项目文件里面,也不用额外起服务。
    opengps
        2
    opengps  
       2023-01-12 10:36:51 +08:00
    既然没有服务器,access ,sqlite 之类都无法用,那就只能客户端直接存本地浏览器 localStorage 之类的
    dzdh
        3
    dzdh  
       2023-01-12 10:38:15 +08:00
    firebase ?
    OkabeRintaro
        4
    OkabeRintaro  
    OP
       2023-01-12 10:41:16 +08:00
    @opengps 就是需要换电脑呀 比如我在公司的 A 电脑背诵好了,我回到家想用自己的 B 电脑继续背诵
    OkabeRintaro
        5
    OkabeRintaro  
    OP
       2023-01-12 10:43:50 +08:00
    @christin 百度了下,还是没懂这个是个什么,是如何使用的?
    amlee
        6
    amlee  
       2023-01-12 11:01:59 +08:00
    sessionStorage 或 indexedDB ,然后自己做个导入导出功能。

    https://zh.javascript.info/indexeddb

    https://zh.javascript.info/localstorage
    kaedeair
        7
    kaedeair  
       2023-01-12 11:02:54 +08:00
    静态网页是做不到的,你需要导入导出功能,把文件用其他软件同步
    lichao
        8
    lichao  
       2023-01-12 11:06:39 +08:00   ❤️ 3
    去学后端和数据库,其他路子大概率是歧途
    orzorzorzorz
        9
    orzorzorzorz  
       2023-01-12 11:07:44 +08:00
    静态网页没辙。既想,又想,其实挺难的。
    但既然是搁 github 上,那就存成 json ,稍微起个修改 json 文件内容的服务。每次记录就本地跑起来,点完再传到 github ,本质是用 github 当数据库来同步。
    或者再一个思路,是内网穿透。你直接访问你自己的电脑,这样就没有同步的问题了。
    andrew2558
        10
    andrew2558  
       2023-01-12 11:09:33 +08:00
    你这个需求直接用 json server 就可以了
    charslee013
        11
    charslee013  
       2023-01-12 11:10:21 +08:00
    有个比较野的路子就是用 GitHub Gist 来存储
    Listen 1 就是这么做的
    InDom
        12
    InDom  
       2023-01-12 11:13:58 +08:00
    我记得有一些( VS Code 的 Config Sync )是把配置文件同步到 gist 进行保存。

    你可以看下能否在你的页面上也通过这种方式提交到 gist 。

    不过不清楚是否会有跨域问题,如果有跨域问题,可以简单的通过油猴脚本提供一个跨域的接口。

    比如我之前写过这样的一个可以直接用
    https://greasyfork.org/scripts/404148

    但是缺点是,每个设备首次使用时,需要配置一下,这些信息可以存在 sessionStorage 或 indexedDB 。

    同理,其他云存储服务,或者提供 api 的网盘都可以用。

    Tampermonkey 的 实用工具,不就是有云导入导出功能嘛。
    chendl111
        13
    chendl111  
       2023-01-12 11:14:17 +08:00
    onedrive+excel
    jamosLi
        14
    jamosLi  
       2023-01-12 11:19:52 +08:00
    你这思路本身就有问题。换句话说你是在 github 做的存储,你要改变存储那就要变更 GitHub 上的文件,那就是要用 git 相关,其他扯一堆没一个有用的。
    要么买服务器搭数据库,上服务,要么就离线或者骚操作改 GitHub 文件,没有别的招式。
    OkabeRintaro
        15
    OkabeRintaro  
    OP
       2023-01-12 11:39:49 +08:00
    @jamosLi 也不是要改 github 文件,就是想找到个第三方来存放我的数据和从第三方获取数据
    msaionyc
        16
    msaionyc  
       2023-01-12 11:42:09 +08:00 via iPhone
    数据库只是形式,你没有服务器 /数据库是做不了你想做的事情的,哪怕用 github 之类的静态文件做这个事情,那从形式上来说 github 就是这个项目的数据库。

    你在 a 设备的行为数据,期望可以在 b 设备上拿到,这就需要有一个第三方的设备来存储这个数据,你现在说没有服务器没有数据库,那你觉得这个数据该怎么流转,这个数据必须要保存,哪怕保存在内存里,也是保存,保存这个数据的设备其实就是服务器,保存这个数据的程序就是数据库。

    你没搞清楚自己想做的事情的流程,也不明白很多概念。你现在要解决的问题是数据如何存储,数据结构如何组成,数据如何流转,这些平时都是后端的范畴,但前端也是可以解决的,但必须要有服务器 /数据库来承载

    我没秀优越感或者谴责你的意思,我能感受到你对很多概念的迷茫,希望说的这些能帮助到你
    OkabeRintaro
        17
    OkabeRintaro  
    OP
       2023-01-12 11:43:51 +08:00
    --我目前的解决方案是: 在公司,我单词记录好之后,直接导出为字符串,然后我复制这个字符串放到一个 txt 文件里面
    --回到家,打开自己电脑,把 txt 文件里面的字符串 直接粘贴进去,然后就会展现我在公司的背诵记录
    OkabeRintaro
        18
    OkabeRintaro  
    OP
       2023-01-12 11:47:13 +08:00
    @msaionyc 就是想找一个快速的第三方,之前想着那种 faskMock 模拟数据
    play78
        19
    play78  
       2023-01-12 11:50:58 +08:00
    申请个码云或者 github 账号。然后前端引用一个纯 js 的 git 客户端。
    https://stackoverflow.com/questions/3411302/javascript-git-client
    然后每次打开应用就 git pull 更新配置。需要提交就 git push
    试试看怎样?
    OkabeRintaro
        20
    OkabeRintaro  
    OP
       2023-01-12 11:51:35 +08:00
    @msaionyc 这个第三方给我接口,能够让我上传新的数据,请求最新数据就好了
    xuxuxu123
        21
    xuxuxu123  
       2023-01-12 11:53:39 +08:00
    用云函数吧,很多云厂商都有,直接写 nodejs 就好了
    OkabeRintaro
        22
    OkabeRintaro  
    OP
       2023-01-12 11:57:11 +08:00
    renmu
        23
    renmu  
       2023-01-12 12:29:08 +08:00 via Android
    webdav
    netnr
        24
    netnr  
       2023-01-12 13:05:10 +08:00 via Android
    用 CF 吧,有 Serverless KV SQLite,为 OP 需求量身定制,还有 LeanCloud
    superedlimited
        25
    superedlimited  
       2023-01-12 13:18:40 +08:00
    google sheets api 或许可以
    marcogray
        26
    marcogray  
       2023-01-12 13:38:24 +08:00
    应该不需要第三方。你这个数据量应该也不是太大,试试把数据 base64 后存到 URL 上,Chrome 的同步浏览历史记录应该就能支持不同设备同步了。
    LeegoYih
        27
    LeegoYih  
       2023-01-12 13:42:56 +08:00
    csv excel
    A555
        28
    A555  
       2023-01-12 13:43:02 +08:00
    你这不如 icloud 直接同步文件算了
    xuelu520
        29
    xuelu520  
       2023-01-12 13:47:27 +08:00
    存 json 文件,或者楼上说的那些都行。
    a90120411
        30
    a90120411  
       2023-01-12 13:59:25 +08:00
    Amazon DynamoDB 有免费额度,足够用了。
    zer0fire
        31
    zer0fire  
       2023-01-12 14:26:24 +08:00
    直接用在线金山文档或腾讯文档, 发起一个调查问卷, 自己答卷就行了
    TimeRain
        32
    TimeRain  
       2023-01-12 14:57:49 +08:00 via Android
    serverless 方案
    oott123
        33
    oott123  
       2023-01-12 15:18:38 +08:00
    zhang77555
        34
    zhang77555  
       2023-01-12 15:29:51 +08:00
    leancloud 数据存储服务,很久以前用过,不了解现在咋样了
    https://leancloud.cn/docs/leanstorage_guide-js.html
    bjfane
        35
    bjfane  
       2023-01-12 15:35:52 +08:00
    难道不是趁机卷后端么?
    OkabeRintaro
        36
    OkabeRintaro  
    OP
       2023-01-12 15:44:05 +08:00
    @oott123 你好,这个 jsonbin 是如何使用的?或者有教程吗?
    OkabeRintaro
        37
    OkabeRintaro  
    OP
       2023-01-12 15:51:47 +08:00
    @oott123 jsonBIN 普通用户不能创建超过 100KB 的数据 可惜
    Light3
        38
    Light3  
       2023-01-12 16:17:06 +08:00
    挂 N 个 json 文件
    OkabeRintaro
        39
    OkabeRintaro  
    OP
       2023-01-12 16:31:46 +08:00
    @Light3 我是需要修改传送新的呀
    liubaicai
        40
    liubaicai  
       2023-01-12 17:08:20 +08:00
    @OkabeRintaro sqlite 都百度不懂,建议你先别搞这些,学一些基础的计算机和开发的知识。
    luos543
        41
    luos543  
       2023-01-12 21:00:56 +08:00
    把需要存储的资料用 base64 加在 url 上, 同步书签
    opengg
        42
    opengg  
       2023-01-12 21:04:45 +08:00
    cloudflare workers + R2 ,免费配额完全够用。
    kapr1k0rn
        43
    kapr1k0rn  
       2023-01-12 22:41:01 +08:00 via iPhone
    把字符串存到 url 参数里,然后浏览器自动同步浏览历史就可以了
    ginakira
        44
    ginakira  
       2023-01-13 00:30:35 +08:00
    提供个简单的思路,可以用 Notion ,既有客户端可以直接操作,也有开放的 API 做增删改查
    OkabeRintaro
        45
    OkabeRintaro  
    OP
       2023-01-13 09:24:36 +08:00
    目前是怎么一回事:
    --每次更新保存出来的是字符串,这个字符串长达 50w 字,其实就是一个 json 数据,只是我把他纯文本输出保存了
    --每次新电脑打开这个网址,网页就开始检测有无本地历史记录,有就调取这个历史记录,没有就弹出输入框让用户输入之前保存的字符串。
    --终极目的:希望用户能只在网页上进行所有的操作,不需要再下载其他什么软件,来进行额外操作,就能多设备同步最新数据。
    OkabeRintaro
        46
    OkabeRintaro  
    OP
       2023-01-13 09:30:31 +08:00
    大家可以打开我附上的网址 https://kyomasan.github.io/practiceEnglish/ ,点击取消出现原始表格之后,打开浏览器的 localstorage 就能看到 localTableDataArr 这个属性的值, 他就是数据源,可以复制看看有多少字。
    OkabeRintaro
        47
    OkabeRintaro  
    OP
       2023-01-13 09:34:51 +08:00
    等周末再看看吧 工作日不想再捣鼓了
    huobazi
        48
    huobazi  
       2023-01-13 09:54:35 +08:00
    用文本吧
    jahanngauss414
        49
    jahanngauss414  
       2023-01-13 10:09:30 +08:00
    @OkabeRintaro 看了下你的 localstorage ,其实你可以改进一下,把单词数据和进度数据分离开,然后存储进度的数据结构可以变精简一点,可以试试把数据放 hash 里面
    yoahang
        50
    yoahang  
       2023-01-13 15:00:39 +08:00
    基于文件的数据库, 或者把数据存在前台
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   5409 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 31ms · UTC 09:04 · PVG 17:04 · LAX 02:04 · JFK 05:04
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.