模块化Firebase管理数据库

mzsu5hc0  于 2023-01-21  发布在  其他
关注(0)|答案(2)|浏览(81)

是否存在或将存在模块化Firebase管理数据库函数,即update()、get()、set()、ref()等?是否存在变通方案?
否则,我将不得不编写两个相同的函数,比如"craftBuilding()"在服务器(管理员)上,一个用于客户端。
尝试:

import { getDatabase, ref, set, update, child, onChildAdded } from 'firebase-admin/database';

错误:
请求的模块'firebase-admin/database'未提供名为'ref'的导出
我希望能够像在客户端那样使用firebase rtdb函数,而不是两次编写相同的函数。

62lalag4

62lalag41#

Admin SDK还没有完全模块化,但有一些功能,如getDatabase()启动V10

import { getDatabase } from 'firebase-admin/database';
// TODO: Initialize Admin SDK

const db = getDatabase();

// usage
const ref = db.ref('../../..')

我建议使用最新版本的SDK沿着现有的语法,但使用更新的模块化导入。

mwyxok5s

mwyxok5s2#

由于Firebase Admin具有名称空间,因此ref在初始化后可用。

import { ref, update, set } from '@path/yourAdminFunctions';

var admin = require("firebase-admin");

// Initialize Admin SDK

var db = admin.database();
export db;

const dbReference = ref("your reference here");
const IDSnapFromQuery = query(dbReference, ["ID", "==", 10]);

你可以通过在一个单独的文件中为你需要的操作创建函数来模块化它:

import { db } from '@path/yourMainFile';

export function ref(databaseReference) {
  return db.ref(databaseReference);
};

// for query pass in the db.ref instance you're using
export function query(dbReference, queryParams) {
  // identify what query params are e.g. ID == 10 in this example
  // note that you will have to code the queryParams filter, I have left it out

  dbReference
    .orderByChild('ID')
    .equalTo(10).on('child_added',
  (snapshot) => {
    return snapshot;
  });
}

// do the same for update, set etc

您可以阅读更多管理SDK文档。

相关问题