Realm 打开数据库时返回空对象

问题描述 投票:0回答:1

我使用的是 Realm(JS) 版本 11.9.0 和 Electron 24.0.0。 我正在尝试在我的 Electron 应用程序中设置本地数据库,但由于未知原因而出错。 一旦我使用指定的配置打开 Realm 数据库,我就会看到返回一个空对象。

顺便说一句,数据库被创建是因为我看到它出现在我的目录中,但是一旦我添加项目并想要检索项目,在这两种情况下我都会得到一个空对象。 我在 Electron 日志环境或控制台中也没有看到任何错误消息。

因此很难准确指出问题出在哪里。 我可能错过了什么吗?

这是示例代码:

main.ts

  import Realm from "realm";
    
    const TaskSchema = {
        name: "Task",
        properties: {
          _id: "int",
          name: "string",
          priority: "int?",
          progressMinutes: "int?",
        },
        primaryKey: "_id",
      };
      const PersonSchema = {
        name: "Person",
        properties: {
          name: "string",
          age: "int?",
        },
      };
      const DogSchema = {
        name: "Dog",
        properties: {
          name: "string",
          owner: "Person?",
          age: "int?",
        },
      };
      const CatSchema = {
        name: "Cat",
        properties: {
          name: "string",
        },
      };


let realm:Realm;

ipcMain.handle('createConnection', async (event, message) => {
  console.log('message',message)
    const encryptionKey = new Int8Array(64);    
    try {
      realm = await Realm.open(
        {
            schema: [TaskSchema,PersonSchema,DogSchema,CatSchema],
            path: "test.realm",
            encryptionKey,
        }
    );
    }catch(err){
      console.log("check issue:",err)
    }

  return {
    status: "ok",
    test: realm // returns Realm {}
  }
})


ipcMain.handle('createCat', async (event, message) => {

  try {
    let cat: Realm.Object;

    realm.write(() => {
      cat = realm.create("Cat", { name: "Max" });
    });
  }catch(err){
    console.log("Check issue:",err)
  }

  console.log('message',message)
  return {
    status: "ok"
  }
})


ipcMain.handle('getCat', async (event, message) => {

    let cats = realm.objects("Cat");

    console.log("cats: ",cats) // returens {}


  return {
    status: "ok",
  }
})

有人在 Realm-Nodejs 和 Electron 中有更多这方面的经验吗?

提前谢谢您。

node.js electron realm ipc
1个回答
0
投票

Realm 对象是原生的,无法通过 javascript 显示,但您仍然可以访问它们的属性。

© www.soinside.com 2019 - 2024. All rights reserved.