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

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

  •  
  •   OkabeRintaro · 71 天前 · 2766 次点击
    这是一个创建于 71 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

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

    第 1 条附言  ·  70 天前
    第 2 条附言  ·  70 天前

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

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

    https://zh.javascript.info/indexeddb

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

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

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

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

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

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

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

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

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

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