后端数据库【免费下载链接】instantInstant is the best backend for AI-coded apps. You get auth, permissions, storage, presence, and streams — everything you need to ship apps your users will love.项目地址https://gitcode.com/gh_mirrors/inst/instant点击查看免费下载Instant 是面向客户端的前端数据库被称为 Modern Firebase内置查询、事务、鉴权、权限、存储、实时同步与离线能力。本指南以 Instant 官方分发给 AI Agent 的AGENTS.md位于 client/packages/create-instant-app/template/rules/AGENTS.md为骨架系统讲解其约束的 SDK 选型、CLI 应用管理流程、查询操作符全集、权限规则写法、存储与 Rooms 实践并结合本仓库源码验证每条规则的真实实现帮助开发者与 AI 编码助手高效、正确地构建完整应用。Instant 是什么一套面向客户端的后端InstantDB简称 Instant是一套客户端数据库查询、事务、权限、实时订阅等逻辑全部在客户端 SDK 中完成开发者无需自建服务端即可获得数据库能力。它支持实时real-time同步、离线offline支持、内建鉴权auth、细粒度权限permissions与文件存储storage。官方 SDK 分为客户端与服务端两类见 client/packages 目录下各包SDK 包名适用场景instantdb/coreVanilla JS无框架instantdb/reactReact含 Next.jsinstantdb/react-nativeReact Native / Expoinstantdb/solidjsSolidJSinstantdb/svelteSvelteinstantdb/vueVueinstantdb/adminJS/TS 服务端后端 SDKinstantdbPython 后端 SDK安装 SDK 前先确认项目使用的包管理器npm / pnpm / bun再安装对应最新版本。React 项目默认搭配 Next.js 与 Tailwind CSSPython 项目则参考 Python 文档。管理 Instant 应用CLI 工作流前置检查schema、perms 与凭据接手一个 Instant 应用时先在项目中寻找两类关键文件instant.schema.ts—— 定义数据模型与索引instant.perms.ts—— 定义权限规则.env或其他 env 文件 —— 保存app id与admin token。如果 schema/perms 文件存在但缺少 app id / admin token需要向用户询问凭据位置或创建新应用。创建新应用init-without-filesnpx instant-cli init-without-files --title APP_NAME该命令只创建应用并输出app id与admin token不生成本地文件开发者将其存入 env 文件。对应的 CLI 实现位于 client/packages/cli/src/commands/initWithoutFiles.ts命令要求--title参数并支持--temp创建临时应用与--org-id等选项创建成功后以 JSON 形式打印appId与adminToken。若未登录会抛出NotAuthedError提示先执行npx instant-cli login。登录流程在 Instant 官网免费注册或登录执行npx instant-cli login完成 CLI 鉴权重新运行 init 命令。拉取远端配置pull已有 app id / admin token 但缺少 schema/perms 文件时npx instant-cli pull --yes从实现看client/packages/cli/src/commands/pull.tspull默认拉取all也可指定schema或perms。推送 schema 变更编辑instant.schema.ts后npx instant-cli push schema --yes变更语义新增字段 添加additions缺失字段 删除deletions。重命名字段时使用--renamenpx instant-cli push schema --rename posts.author:posts.creator stores.owner:stores.manager --yespush命令支持-a --app指定目标应用、--skip-check-types跳过服务端类型检查、-p --package自动安装缺失的 SDK还可用环境变量INSTANT_SCHEMA_FILE_PATH与INSTANT_PERMS_FILE_PATH覆盖 schema/perms 文件位置见 client/packages/cli/src/index.ts。底层推送流程client/packages/cli/src/lib/pushSchema.ts值得注意CLI 会先从远端拉取当前 schema本地文件必须export default schema且导出类型为InstantSchemaDef然后调用diffSchemas计算差异并渲染变更计划client/packages/cli/src/renderSchemaPlan.ts交互模式下会询问 Push these changes? 确认--yes则自动确认推送后若返回indexing-jobs还会等待索引任务完成。推送权限变更编辑instant.perms.ts后npx instant-cli push perms --yesCLI 临时查询npx instant-cli query { posts: {} } --adminquery命令必须携带上下文标志之一--admin、--as-email email或--as-guest并支持--app id。实现client/packages/cli/src/commands/query.ts限定四个上下文只能选其一--admin/--as-email/--as-guest/--as-token查询体使用 JSON5 解析后 POST 到/admin/query端点。CRITICAL 查询指南InstaQL 完整操作符排序规则Ordering: order: { field: asc | desc } Example: $: { order: { dueDate: asc } } Notes: - Field must be indexed typed in schema - Cannot order by nested attributes (e.g. owner.name)必须在 schema 中为想要过滤或排序的字段建立索引indexed否则查询会报错。这是 AGENTS.md 反复强调的 CRITICAL 规则。where操作符全集Equality: { field: value } Inequality: { field: { $ne: value } } Null checks: { field: { $isNull: true | false } } Comparison: $gt, $lt, $gte, $lte (indexed typed fields only) Sets: { field: { $in: [v1, v2] } } Substring: { field: { $like: Get% } } // case-sensitive { field: { $ilike: %get% } } // case-insensitive Logic: and: [ {...}, {...} ] or: [ {...}, {...} ] Nested fields: relation.field: value当前 Instant 完整支持的操作符仅此一套没有$exists、$nin、$regexstartsWith/endsWith/includes均由$like大小写敏感与$ilike大小写不敏感承担。类型定义见 client/packages/core/src/queryTypes.ts运行时的$like/$ilike匹配器与$isNull转换逻辑见 client/packages/core/src/instaql.ts。分页限制分页键limit、offset、first、after、last、before只能在顶层命名空间使用不能用于嵌套关系否则报错。查询使用原则React 中必须遵守 Hooks 规则hook 不能条件出现不确定某个特性时查阅官方文档对应章节。CRITICAL 权限指南Instant 权限规则CELInstant 权限使用类 CEL 表达式编写位于instant.perms.ts。data.ref访问关联属性data.ref(path.to.attr)用于访问关联属性linked attributes永远返回列表路径必须以属性结尾不能停在关系上。正确写法auth.id in data.ref(post.author.id) // auth.id 在 author id 列表中 data.ref(owner.id) [] // 没有 owner错误写法auth.id in data.post.author.id auth.id in data.ref(author) data.ref(admins.id) auth.id auth.id data.ref(owner.id) data.ref(owner.id) null data.ref(owner.id).length 0注意data.ref返回列表因此不能与标量比较 auth.id、不能判null也不能调用.length。auth.ref访问用户关联属性与data.ref相同但路径必须以$user开头返回列表。正确写法admin in auth.ref($user.role.type) auth.ref($user.role.type)[0] admin错误写法auth.ref(role.type) auth.ref($user.role.type) admin不支持的能力newData.ref(x) data.ref(someVar .members.id)即newData.ref不支持data.ref参数必须是字面量字符串不能拼接变量。$users权限默认行为操作默认值viewauth.id data.idupdatefalsedeletefalse不可覆盖createtrue任何人可注册可覆盖view、update、create但不能覆盖delete。create规则在注册流程signup中执行而非transact时执行用于限制注册或校验extraFieldsextraFields必须有显式create规则否则注册会被阻止防止未经校验的写入。$files权限默认权限全部为false需按需覆盖data.ref不适用于$files权限应使用data.path.startsWith(...)或data.path.endsWith(...)编写基于路径的规则。字段级权限在保持实体公开的同时限制敏感字段访问{ $users: { allow: { view: true }, fields: { email: auth.id data.id } } }要点字段规则会覆盖实体级view对该字段而言适用于在公开实体上隐藏敏感数据邮箱、手机号等。CRITICAL 存储指南Instant Storage铁律不要用字符串存 URL如果应用展示图片或文件必须使用 Instant Storage不要将 URL 作为字符串属性存在实体上。种子脚本seed scripts也不得用占位图 URL如 picsum.photos伪造文件支持。上传会自动创建$files实体通过 schema 将$files关联到业务数据再通过关系查询拿到 URL。三个 CRITICAL 约束使用 Storage 时schema 实体中必须包含$files$files实体只能通过db.storage.uploadFile创建不能用db.transact创建也不能通过事务设置url上传与关联的标准模式如下。完整示例上传图片并关联到文章entities: { $files: i.entity({ path: i.string().unique().indexed(), url: i.string(), }), posts: i.entity({ caption: i.string(), }), }, links: { postImage: { forward: { on: posts, has: one, label: image }, reverse: { on: $files, has: many, label: posts }, }, } // 上传并把返回的 file id 关联到业务实体 const postId id(); const { data } await db.storage.uploadFile(posts/${postId}/${file.name}, file); db.transact( db.tx.posts[postId].update({ caption }).link({ image: data.id }) ); // 通过关系查询拿到 URL const { data } db.useQuery({ posts: { image: {} } }); img src{post.image.url} /uploadFile(path, file)的底层实现在 client/packages/core/src/Reactor.js 与 client/packages/core/src/StorageAPI.tsSDK 层 API 见 client/packages/core/src/index.ts。CRITICAL Rooms 指南Presence 与 Topics基本认知Presence 与 topics 的 hooks 位于db.rooms上房间对象作为第一个参数传入房间对象本身没有usePresence或publishPresence方法Rooms 承载两种**临时ephemeral**原语presence光标位置、在线状态和 topics实时反应。只用它们存放无需持久化的数据——通过transact持久化的数据本身就会实时同步给所有订阅客户端只有数据故意设计为临时时才使用 Rooms。Presence连接期内的共享状态每个 peer 发布一个 presence 对象房间内所有其他 peer 可读随连接保留断线自动清理。const room db.room(chat, main); const { user, peers, publishPresence } db.rooms.usePresence(room, { initialPresence: { x: 0, y: 0 }, }); // peers 以 peerId 为键不是数组。用 Object.values(peers) 遍历 publishPresence({ x: 50, y: 50 });Topics不保留的实时事件Topic payload 不被保留peer 只能看到自己监听期间触发的事件。const room db.room(chat, main); const publishEmoji db.rooms.usePublishTopic(room, emoji); publishEmoji({ name: fire }); db.rooms.useTopicEffect(room, emoji, (payload) { animateEmoji(payload.name); });Presence 发布的核心实现在 client/packages/core/src/Reactor.jsSDK 层封装见 client/packages/core/src/index.ts。最佳实践初始化时传入 schema始终在初始化时传入schema以获得查询与事务的类型安全import schema from /instant.schema; // 客户端 import { init } from instantdb/react; // 或对应 Instant SDK const clientDb init({ appId, schema }); // 服务端 import { init } from instantdb/admin; const adminDb init({ appId, adminToken, schema });用id()生成实体 id新实体一律使用id()生成 idimport { id } from instantdb/react; // 或对应 Instant SDK import { clientDb } from /lib/clientDb; clientDb.transact(clientDb.tx.todos[id()].create({ title: New Todo }));用 Instant 工具类型建模import { AppSchema } from /instant.schema; type Todo InstaQLEntityAppSchema, todos; // 来自 clientDb.useQuery({ todos: {} }) type PostsWithProfile InstaQLEntity AppSchema, posts, { author: { avatar: {} } } ; // 来自 clientDb.useQuery({ posts: { author: { avatar: {} } } })用db.useAuth/db.subscribeAuth管理登录态import { clientDb } from /lib/clientDb; // React / React Native 使用 db.useAuth function App() { const { isLoading, user, error } clientDb.useAuth(); if (isLoading) { return null; } if (error) { return Error message{error.message} /; } if (user) { return Main /; } return Login /; } // Vanilla JS 使用 db.subscribeAuth function App() { renderLoading(); db.subscribeAuth((auth) { if (auth.error) { renderAuthError(auth.error.message); } else if (auth.user) { renderLoggedInPage(auth.user); } else { renderSignInPage(); } }); }注册时用extraFields写入自定义属性将extraFields传给任意 sign-in 方法可在用户创建时原子写入自定义$users属性这些字段必须在 schema 的$users上定义为可选属性。用返回值中的created布尔值判断是否为新用户并初始化数据// 注册时设置属性 const { user, created } await db.auth.signInWithMagicCode({ email, code, extraFields: { nickname, createdAt: Date.now() }, }); // 为新用户初始化数据 if (created) { db.transact([ db.tx.settings[id()] .update({ theme: light, notifications: true }) .link({ user: user.id }), ]); }总结AGENTS.md是 Instant 官方为 AI 编码助手设计的操作手册其核心规则可归纳为四条主线schema 即索引过滤/排序字段必须 indexed typed、权限即 CELdata.ref/auth.ref返回列表、$files用路径规则、存储即$filesURL 只来自 Storage 上传而非字符串属性、Rooms 即临时presence/topics 只放不持久化的数据。开发者或 AI Agent遵循本指南配合 client/packages/cli 的init-without-files/pull/push/query命令与 client/packages/core 的源码实现即可快速、正确地搭建类型安全、权限完备、支持实时与离线的高质量 Instant 应用。赞分享后端数据库【免费下载链接】instantInstant is the best backend for AI-coded apps. You get auth, permissions, storage, presence, and streams — everything you need to ship apps your users will love.项目地址https://gitcode.com/gh_mirrors/inst/instant点击查看免费下载相关推荐InstantDB 实战手册用 Instant现代 Firebase为 AI 编码应用构建 Schema、权限与实时功能InstantDB 实战手册用 Instant现代 Firebase为 AI 编码应用构建 Schema、权限与实时功能 Instant在仓库中亦称 I后端数据库用 InstantDB 为 AI 编码应用构建实时后端从包选择到完整示例的实战指南用 InstantDB 为 AI 编码应用构建实时后端从包选择到完整示例的实战指南 导读本文基于仓库 client/sandbox/task tracker后端数据库用 TanStack Start 构建实时全栈应用InstantDB create-instant-app 官方示例深度解析用 TanStack Start 构建实时全栈应用InstantDB create instant app 官方示例深度解析 InstantDB 官方在仓库中后端数据库上一篇UE4SS 在 UE5.4 游戏中的 FText 构造函数签名问题终极解决方案下一篇CockroachDB/errors迁移指南从标准errors和pkg/errors无缝升级创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
企业数字化 ERP 产品动态
相关推荐
生成式化学平台的可信度革命:从分子生成到合成验证 1. 这份报告不是“预测”,而是化学研发范式迁移的现场记录2026年生成式化学平台的发展前景——看到这个标题,很多人第一反应是:又一份PPT式行业白皮书?堆砌增长率、画饼市场规模、罗列几家头部公司名字就完事?我参与过… · 2026/9/24 20:41:49
Manus、OpenClaw、Hermes智能体框架选型指南 1. 这不是选“哪个更强”,而是搞清“你在搭什么系统”最近刷技术社区、AI开发者群,甚至销售和运营同事的聊天记录里,“Manus”“OpenClaw”“Hermes”这三个名字出现频率高得离谱。有人发截图说“OpenClaw部署卡在WSL2环境验证失败”… · 2026/9/24 20:41:49
金三银四Python测试工程师技术栈拆解:从基础到AI测试全景指南 每年二月底到四月初,是测试工程师跳槽换坑最密集的窗口。我身边不少朋友从年前就开始刷题、改简历,但真正到了面试环节,暴露出来的问题往往不是"会不会写Python",而是根本不清楚企业在这个时间点到底想要什么样的人。这… · 2026/9/24 20:41:49
基于粒子群算法的光伏MPPT控制Simulink仿真实现 手头有做光伏发电控制的朋友,应该都懂MPPT这三个字的含金量。传统的扰动观察法、电导增量法在光照均匀时都很能打,但一旦组件被云朵、建筑物、落叶遮住半边,P-V曲线出现多峰,这批“单峰猎人”就全抓瞎了,系统可能直接锁… · 2026/9/24 21:12:26
音频压缩6个方法详解:从MP3到Opus,有损无损一次讲透 打开你的手机看看,是不是光一个微信就吃掉了十几个G,其中语音文件、视频聊天记录、下载的音乐占了一大半。再把目光转向电脑,录一段播客、剪一条片子,随手导出的音频动不动就是几百MB,发个邮件都提示附件过大。这些都是… · 2026/9/24 21:12:26
基于SpringBoot+Vue的师生健康信息管理系统设计与实现全解析 每年到毕设季,找我要选题建议的同学里,十有八九会问“有没有那种功能完整、技术栈主流、还不太容易翻车的题目”,而“师生健康信息管理系统”就是我从头到尾都很推荐的一类。原因也很简单:这个题目管理的数据对象明确、角色分工清… · 2026/9/24 21:12:26
工厂焊装车间照明节能改造:KNX照明系统方案分区灯控人体感应 焊装车间是汽车工厂中照明设计最复杂的场景之一。焊接作业时弧光强烈,而检验工位又要求极高照度——两者对灯光的需求完全不同,用同一套照明方案无法兼顾。据《乘用车工厂焊装车间照明节能设计的探讨》一文披露,一汽大众华北生产基地焊装车间… · 2026/9/24 21:12:19
Mac 上如何替代 Notepad++:兼容层、原生编辑器与命令行实践 简介:这份文档面向希望在 Mac 电脑上使用 Notepad 的用户,尤其是习惯 Windows 编辑环境、又不愿更换工具的开发者与运维人员。由于 Notepad 官方并未推出 Mac 版本,资源围绕借助 WineBottler 在 macOS 上运行 Windows 程序的思路展开… · 2026/9/24 21:12:19
Java SpringBoot Vue3全栈商城系统设计与实现解析 这一套「Java SpringBoot Vue3 MyBatis MySQL」的在线商城系统源码,算是这几年Java后端很主流、也最适合练手的一类全栈项目了。前后端分离、RESTful接口、JWT鉴权、商品订单流转、后台管理,覆盖了一个中型Web系统的大部分核心知识点。不管是拿来做毕… · 2026/9/24 21:12:19
基于YOLOv8的渔船作业监控系统:从环境搭建到边缘部署全流程 简介:这是一套面向计算机、人工智能、自动化等专业学生与教师的毕业设计级项目资源,围绕YOLOv8实现渔船作业监控系统,可用于毕设、课程设计、大作业或项目立项演示。压缩包共97个文件,约24.21MB,以70个Python源码文件为… · 2026/9/24 0:00:13
1D-CNN时间序列建模实战:从Conv1d原理到工业落地 简介:面向时间序列数据建模的一维卷积神经网络完整实现,适合深度学习入门者及需要快速验证时序模型的研究者,能够从音频、文本、传感器或股价等序列中挖掘局部特征与时间依赖。压缩包体积很小,只有3KB,内含3个Python脚… · 2026/9/24 0:00:26
柔软的L:汉语语流中被忽视的舌肌张力控制 1. 这个“L”不是字母表里的L,而是舌尖上的L最近在几个方言群和语音教学社群里,反复看到有人发一句:“也说字母L:柔软的长舌”。初看以为是英语发音课笔记,点开才发现全是方言爱好者、播音系学生、语言康复师甚至戏曲演… · 2026/9/24 0:00:44