V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
firhome
V2EX  ›  程序员

在后端开发中创建数据库是怎么创建的呢?

  •  
  •   firhome · 2022-05-10 18:56:33 +08:00 · 3222 次点击
    这是一个创建于 964 天前的主题,其中的信息可能已经有所发展或是发生改变。
    大家好,小弟是前端,请教个问题。

    我用 node 开发了个小项目 想打包给别人用。

    但是对方是小白。我不可能让他去 跑 sql 创建数据库

    就想问问大家一个正常可对外的项目 数据库创建是怎么做的呢(怎么友好创建呢)?
    23 条回复    2022-05-11 17:18:26 +08:00
    Jooooooooo
        1
    Jooooooooo  
       2022-05-10 18:57:45 +08:00
    基建完善就去做好的后台创建, 没有的话你只能手动连数据库创建了呗.
    renmu
        2
    renmu  
       2022-05-10 18:59:18 +08:00 via Android
    sqlite 欢迎你
    eason1874
        3
    eason1874  
       2022-05-10 19:05:05 +08:00
    用文件数据库 SQLite ,项目内置一份创建 SQL 脚本,代码运行时获取数据库信息没有就通过脚本创建
    sflypig
        4
    sflypig  
       2022-05-10 19:12:49 +08:00
    对外的项目这种 db init (包括建库、创建用户、建立索引等)的工作一般都是交给运维,运维给到开发就是一些个 r w 权限的账号可以去库里写数据。大部分运维其实也就是写脚本做的 db init ,所以你可以自己写 shell 脚本
    focuxin
        5
    focuxin  
       2022-05-10 19:13:29 +08:00
    我正在用的,很适合小的数据量不多的 node 项目: https://github.com/louischatriot/nedb/
    v2eb
        6
    v2eb  
       2022-05-10 19:15:46 +08:00 via Android
    项目启动执行下查询语句,没有就建表,有就跳过🐒
    sheeta
        7
    sheeta  
       2022-05-10 20:45:11 +08:00
    学一下 wordpress ,哈哈,傻瓜式操作
    paradoxs
        8
    paradoxs  
       2022-05-10 20:48:11 +08:00
    没看懂这是啥问题。 你给别人打包项目的时候,不打包数据库?

    不过其实也行啊,数据库也是可以用代码动态创建的。

    不过我还是建议你把数据库建好,给他实施部署的时候给他,把数据库一起打包进去啊。
    XCFOX
        9
    XCFOX  
       2022-05-10 20:58:42 +08:00
    nodejs 的 ORM 都是能在项目启动的时候自动建表的。
    比如 TypeORM 把 synchronize 置为 true 。
    这种方法是最友好的,但是不太安全。正经生产环境绝不会开 ORM 自动更新表结构。

    就我个人的经验来看,nodejs 后端一般是先在本地或者测试服用 ORM 的自动建表功能建完了之后,用 DataGrip 或者手动 dump 把表结构导出成 SQL ,人眼过一遍,再找新的环境跑一遍,再把 SQL 部署到线上。真正对线上生产环境改动的 SQL 都是经过反复测试的。

    具体到楼主这个小项目,我建议楼主要么开 ORM 自动更新,要么把运维的活也揽了。
    gogogo1203
        10
    gogogo1203  
       2022-05-10 21:15:55 +08:00
    写一个单独的 admin 管理程序, 把 migrate, drop, seed 都写进去。 自己开发的时候用也十分舒服
    lower
        11
    lower  
       2022-05-10 22:01:38 +08:00
    直接把全部应用程序、数据库都塞到 docker 镜像中,映射出需要的端口就行;
    只需要给对方提供一行启动命令
    documentzhangx66
        12
    documentzhangx66  
       2022-05-10 23:01:44 +08:00
    既然对方是小白,那就应该让对方把物理服务器,或虚拟机的 IP 、账号、连接方式都发给你,由你去操作建立。
    kujio
        13
    kujio  
       2022-05-11 10:32:56 +08:00
    sqllite 呀,数据不多,不频繁可以用 JSON 格式存文件。
    项目配置比较麻烦的话还是上 docker ,小项目就算了
    Rache1
        14
    Rache1  
       2022-05-11 10:53:05 +08:00
    Laravel 中,「迁移」的概念就很不错
    agagega
        15
    agagega  
       2022-05-11 11:02:31 +08:00
    要么传统 PHP 风格,运行时检测表,发现没有就提示用户创建;要么 Rails 风格,一堆迁移文件,数据库帐号密码设置好跑一个命令一次性设置好
    kaedeair
        16
    kaedeair  
       2022-05-11 11:20:26 +08:00
    1.用 sqlite 直接复制个初始数据库给他
    2.用 docker-compose 初始化脚本扔到 /docker-entrypoint-initdb.d 里面,前后端打包成服务,用容器名解析 ip
    Huelse
        17
    Huelse  
       2022-05-11 13:17:37 +08:00
    可以考虑 docker
    xooass
        18
    xooass  
       2022-05-11 15:59:22 +08:00
    一堆 php 应用比如 discuz ,WordPress ,不都有一个安装界面让小白填一下数据库用户名和密码就自动安装了
    Joker123456789
        19
    Joker123456789  
       2022-05-11 16:50:46 +08:00
    都有数据库了,还想着运行在别人的本地? 弄个服务器部署一下 不好吗?
    gen900
        20
    gen900  
       2022-05-11 17:02:30 +08:00
    我把整个 node pkg 成一个 exe ,额外增加了 setup 参数。写了个使用说明,第一次运行要 server.exe setup. 以后就直接运行 server.exe 就可以了
    gen900
        21
    gen900  
       2022-05-11 17:03:27 +08:00
    给客户的越傻瓜越好
    tuutoo
        22
    tuutoo  
       2022-05-11 17:04:35 +08:00
    把整个项目都包在一个 Docker 里发布
    Linxing
        23
    Linxing  
       2022-05-11 17:18:26 +08:00
    写 migrate 用代码去控制
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1249 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 17:31 · PVG 01:31 · LAX 09:31 · JFK 12:31
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.