SailsJS本地磁盘开发数据库格式及手动修改方法咨询
解决Sails.js本地磁盘数据库(sails-disk)的手动修改问题
嘿,我来帮你理清这个问题!你遇到的困惑其实是因为sails-disk根本不是SQLite格式——这就是为什么你用SQLite浏览器打不开它的原因。下面详细给你说明:
一、sails-disk的存储格式
sails-disk采用的是JSON文件存储,每个模型对应一个独立的JSON文件,默认存放在项目根目录下的.tmp/localDiskDb文件夹里。比如你有一个User模型,就会生成User.json文件,里面是一个包含所有用户记录的JSON数组,每条记录是一个符合模型结构的对象。
举个例子,User.json的内容大概是这样的:
[ { "id": 1, "username": "test_user", "email": "test@example.com", "createdAt": "2024-05-20T14:30:00.000Z", "updatedAt": "2024-05-20T14:30:00.000Z" } ]
二、手动修改填充测试数据的步骤
要手动修改这个数据库,得遵循以下步骤,避免文件锁定或数据覆盖:
- 第一步:停止Sails应用
运行中的Sails会锁定这些JSON文件,直接修改不仅不会生效,还可能导致数据丢失或应用崩溃。先执行sails stop(或者直接关掉终端进程)。 - 第二步:找到数据库文件
打开项目根目录下的.tmp/localDiskDb文件夹,找到对应模型的JSON文件。 - 第三步:编辑JSON文件
用普通的文本编辑器(比如VS Code、Notepad++)打开文件,按照JSON格式添加或修改测试数据。注意要保证格式正确:每个记录是对象,放在数组里,属性名要和模型定义一致,日期字段要符合ISO格式(比如"2024-05-20T14:30:00.000Z")。 - 第四步:重启Sails应用
执行sails lift重启应用,新的测试数据就会被加载进来了。
三、更高效的测试数据填充方式(可选)
如果不想每次手动改JSON,推荐在Sails的config/bootstrap.js里写自动填充逻辑,这样每次启动应用都会自动生成测试数据:
module.exports.bootstrap = async function(done) { // 检查是否已有测试数据,避免重复创建 const existingUser = await User.findOne({ username: 'test_user' }); if (!existingUser) { await User.create({ username: 'test_user', email: 'test@example.com', password: 'test123' // 如果有加密逻辑,记得用模型的加密方法处理 }); console.log('测试用户已创建'); } done(); };
这样开发时每次启动应用,都会自动帮你生成测试数据,比手动改JSON更省心~
内容的提问来源于stack exchange,提问作者paul23
相关产品推荐
相关产品推荐

