0.1.8 • Published 1 year ago

@blendviewer/core v0.1.8

Weekly downloads
-
License
MIT
Repository
-
Last release
1 year ago

简体中文

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 },如下为上传一个 stpglb 格式的 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显示如下:


0.1.8

1 year ago

0.1.7

1 year ago

0.1.6

1 year ago

0.1.5

1 year ago

0.1.4

1 year ago

0.1.3

1 year ago

0.1.2

1 year ago

0.1.1

1 year ago

0.1.0

1 year ago

0.0.9

1 year ago

0.0.8

1 year ago

0.0.7

1 year ago

0.0.6

1 year ago

0.0.5

1 year ago

0.0.4

1 year ago

0.0.3

1 year ago

0.0.2

1 year ago

0.0.1

1 year ago