0

我有一个场景,我需要从作为参数传递给另一个函数的函数中获取返回值。我尝试了多种方法。但无法从 ProfileAction.js 文件中获取CreateProfileComponent的returnValue 。

// ProfileAction.js
export default (database) => {
  return {
    createProfile: async (createdProfile) => {
      const profileCollection = database.get("profiles");
      const { name, email } = createdProfile;
      try {
        await database.action(async () => {
          const returnValue = await profileCollection.create((profile) => {
            profile.name = name;
            profile.email = email;
          });
        });
      } catch (error) {
        console.log("createProfile", error);
      }
    },
  };
};

// CreateProfileComponent.js
const CreateProfileComponent = () => {
    const database = useDatabase();
    const profileAction = ProfileAction(database);
    const createdRecord = await profileAction.createProfile({
        name: "John Doe",
        email: "johndoe@gmail.com",
    });
}

最后我想要的是 CreateProfileComponent 中的 returnValue 值。函数 database.actions() 和 profileCollection.create() 来自第三方库 (WatermelonDB)

4

1 回答 1

0

我不确定是什么database.action,但你应该在这个函数中返回一个值。如下所示:return await database.action(async () => {

并在 catch 上抛出错误

export default (database) => {
  return {
    createProfile: async (createdProfile) => {
      const profileCollection = database.get("profiles");
      const { name, email } = createdProfile;
      try {
        return await database.action(async () => {
          const returnValue = await profileCollection.create((profile) => {
            profile.name = name;
            profile.email = email;
          });
        });
      } catch (error) {
        console.log("createProfile", error);
        throw error;
      }
    },
  };
};

// CreateProfileComponent.js
const CreateProfileComponent = () => {
    const database = useDatabase();
    const profileAction = ProfileAction(database);
    try {
        const createdRecord = await profileAction.createProfile({
            name: "John Doe",
            email: "johndoe@gmail.com",
        });
    } catch (e) {
    }
}
于 2021-05-21T18:40:32.940 回答