在我们关于资源的上一次讨论中,我们添加了两种新方法boot
和extend
,这些方法分别在转换输出和转换输出后要调用。
,但是我们需要一些帮助者,使我们的代码更容易使用数据和资源,所以让我们添加一些好的帮助者。
将数据设置为最终输出
在开始之前,快速提醒,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
,如果未定义的address
和location
,则将自动添加address
和location
的任何父键。
从最终输出中删除钥匙
让我们实现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.city
和name
键。
从资源中获取价值
现在让我们在本文中添加我们的最后一个实用程序,我们需要一种从资源中获取值的方法,此助手方法将使我们能够使用点表示法获得一个值,如果该密钥不存在,它将返回默认值。
// 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上找到该课程,该课程是阿拉伯语。
ð奖励内容ð
您可能会看这些文章,这肯定会提高您的知识和生产力。
一般主题
- Event Driven Architecture: A Practical Guide in Javascript
- Best Practices For Case Styles: Camel, Pascal, Snake, and Kebab Case In Node And Javascript
- After 6 years of practicing MongoDB, Here are my thoughts on MongoDB vs MySQL
软件包和库
- Collections: Your ultimate Javascript Arrays Manager
- Supportive Is: an elegant utility to check types of values in JavaScript
- Localization: An agnostic i18n package to manage localization in your project
React JS软件包
课程(文章)