86-Nodejs课程2023:资源:数据和资源设置和获取器
#typescript #node #mongodb #fastify

在我们关于资源的上一次讨论中,我们添加了两种新方法bootextend,这些方法分别在转换输出和转换输出后要调用。

,但是我们需要一些帮助者,使我们的代码更容易使用数据和资源,所以让我们添加一些好的帮助者。

将数据设置为最终输出

在开始之前,快速提醒,this.data属性是指资源的最终输出,而this.resource是指将要转换的原始资源。

现在,让我们添加一种新方法来添加一个新的输出密钥,该密钥将添加到最终输出中。

// src/core/resources/resource.ts
import { set } from "@mongez/reinforcements";

// ...

export default class Resource {
  // ...
  /**
   * Set value to the final output
   */
  public set(key: string, value: any) {
    set(this.data, key, value);

    return this;
  }
  // ...
}

这是一种简单的set方法,但在内部,我们使用Set utility在最终输出中设置键。

用法的示例:

// src/app/users/resources/user-resource.ts

// ...
protected async boot() {
  this.set('address.location.city', 'Cairo');
}

这将在带有值Cairo的最终输出中添加一个新的键address.location.city,如果未定义的addresslocation,则将自动添加addresslocation的任何父键。

从最终输出中删除钥匙

让我们实现set方法的确切否定,我们将添加一种新方法以从最终输出中删除密钥或更多。

// src/core/resources/resource.ts
import { set, unset } from "@mongez/reinforcements";

// ...

export default class Resource {
  // ...

  /**
   * Remove a key from the final output
   */
  public remove(...keys: string[]) {
    unset(this.data, keys);
  }
  // ...
}

此方法将从最终输出中删除一个或多个键,关于unset utility的好处,它允许删除嵌套键。

用法的示例:

// src/app/users/resources/user-resource.ts

// ...
protected async boot() {
  this.remove('address.location.city', 'name');
}

这将从最终输出中删除address.location.cityname键。

从资源中获取价值

现在让我们在本文中添加我们的最后一个实用程序,我们需要一种从资源中获取值的方法,此助手方法将使我们能够使用点表示法获得一个值,如果该密钥不存在,它将返回默认值。

// src/core/resources/resource.ts
import { set, unset, get } from "@mongez/reinforcements";

// ...

export default class Resource {
  // ...

  /**
   * Get value from the resource
   */
  public get(key: string, defaultValue?: any) {
    return get(this.resource, key, defaultValue);
  }
  // ...
}

简单清洁,这将使我们能够使用点表示法从资源获取一个值,如果该密钥不存在,它将返回默认值。

用法的示例:

// src/app/users/resources/user-resource.ts

// ...

protected async boot() {
  const name = this.get('name', 'John Doe');

  this.set('name', name);
}

这将从资源中获取name键,如果不存在,它将返回John Doe作为默认值。

- 结论

在本文中,我们在资源类中添加了三个新方法,这些方法将帮助我们将数据设置为最终输出,从最终输出中删除键,并从资源中获取一个值。

â•给我买一杯咖啡。

如果您喜欢我的文章并看到对您有用,则可以buy me a coffee,它将帮助我继续前进并继续创建更多内容。

ð项目存储库

您可以在Github上找到此项目的最新更新

ð加入我们的社区

Discord上加入我们的社区以获得帮助和支持(节点JS 2023频道)。

ð视频课程(阿拉伯语)

如果您想以视频格式学习此课程,则可以在Youtube上找到该课程,该课程是阿拉伯语。

ð奖励内容ð

您可能会看这些文章,这肯定会提高您的知识和生产力。

一般主题

软件包和库

React JS软件包

课程(文章)