0.1.8 • Published 1 year ago
@blendviewer/core v0.1.8
OpenBase,一个注重交互体验且能够以统一接口嵌入到 React、Vue、Node.js 的数据方案,提供用户管理、权限认证、数据库、对象存储、可视化等基础的 BaaS 服务与功能,帮助你轻松创建、管理您的应用程序,并将其托管到玲珑岛。
Usage
数据存储
管理员初始化数据库,创建 table:
const { OpenBase, Auth } = require('@blendviewer/core');
const projectId = `your-project-id`;
const apiKey = `your-api-key`;
const email = `your-email`;
/**
* 1 首先获取授权
*/
await Auth.loginWithApiKey({ projectId, email, apiKey });
/**
* 2 创建一个db实例
*/
const db = OpenBase.createClient(`https://${projectId}.blendviewer.com`);
/**
* 3 创建一个user表
*/
const user = await db.createTable('user', {
id: {
allowNull: false,
primaryKey: true,
type: OpenBase.DataTypes.UUID(),
defaultValue: OpenBase.DefaultValues.UUIDV1(),
comment: '主键ID',
},
accountId: {
allowNull: false,
type: OpenBase.DataTypes.UUID(),
defaultValue: OpenBase.DefaultValues.UUIDV1(),
comment: '账户 ID',
},
nickname: {
allowNull: true,
type: OpenBase.DataTypes.STRING(128),
defaultValue: 'name',
comment: '昵称',
},
career: {
allowNull: true,
type: OpenBase.DataTypes.STRING(128),
defaultValue: 'career',
comment: '职业',
},
});
/**
* 4 新增数据
*/
const userA = await db.user.create({
data: { nickname: 'A' },
});
const userB = await db.user.create({
data: { nickname: 'B' },
});
/**
* data1为userA data2为userB
*/
const data1 = await db.user.findOne({
where: {
nickname: 'A',
},
});
const data2 = await db.user.findOne({
where: {
nickname: 'B',
},
});
const results = await db.user.findMany({
where: {
nickname: ['A', 'B'],
},
});
/**
* 更新userA职业为学生 更新userB职业为工程师
*/
const result1 = await db.user.update({
where: { nickname: 'A' },
data: { career: 'student' },
});
const result2 = await db.user.update({
where: { nickname: 'B' },
data: { career: 'engineer' },
});终端用户创建并修改属于自己的数据:
const { OpenBase } = require('@blendviewer/core');
const projectId = `your-project-id`;
const email = `your-email`;
/**
* 1 首先获取授权
*/
const { code, messageId } = await Auth.sendEmailCode({ projectId, email });
const { account } = await Auth.loginWithEmail({
projectId,
email,
messageId,
code,
});
/**
* 用户只能创建并修改属于自己的数据,但可以创建多条记录
*/
const userA = await db.user.create({
data: {
nickname: 'A',
accountId: account.id,
},
});
/**
* data1为userA
*/
const data1 = await db.user.findOne({
where: { nickname: 'A' },
});
/**
* 更新userA职业为学生
*/
const result1 = await db.user.update({
where: {
accountId: account.id,
nickname: 'A',
},
data: { career: 'student' },
});对象存储
- 上传对象
const objects = await openBase.uploadObjects({
objects: [
{
objectName: 'logo.svg',
filePath: '/home/test/logo.svg',
},
{
objectName: 'test.png',
filePath: '/home/test/test.png',
},
{
objectName: 'test.md',
filePath: '/home/test/test.md',
},
],
});- 对象列表
const objects = await openBase.listObjects({ limit: 10, skip: 0 });- 删除对象
const num = await openBase.deleteObjects({
objects: [
{
objectName: 'logo.svg',
},
{
objectName: 'test.png',
},
{
objectName: 'test.md',
},
],
options: { softDelete: true },
});对象可视化
玲珑岛提供 100 多种数据类型的在线可视化,如 3D、PPT、Audio 等,且所支持范围还在不断增加。
- 开启转换
可视化功能依赖格式转换,以插件的形式嵌入到上传接口,这意味着你需要在上传对象时启动{ enableConverter: true },如下为上传一个 stp 和 glb 格式的 3D 文件
const objects = await openBase.uploadObjects({
objects: [
{
objectName: 'test.stp',
filePath: '/home/test/test.stp',
},
{
objectName: 'test.glb',
filePath: '/home/test/test.glb',
},
],
options: { enableConverter: true },
});接口返回数组元素中包含一个非空url参数,点击url显示如下: