-
Notifications
You must be signed in to change notification settings - Fork 10k
[DO] Reference DO name using init
#20309
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Merged
Changes from 7 commits
Commits
Show all changes
19 commits
Select commit
Hold shift + click to select a range
e5b7a95
Merge commit '3dea049f67246f2d1fe1748dab4e40284cb1731a' into jun/do/i…
Oxyjun d8bb9b3
Adding placeholder file
Oxyjun 8413bfa
Merge commit '3bd7c03c761d841684c6135103335750b6ab28f2' into jun/do/i…
Oxyjun 758c810
Setting up file for main code example.
Oxyjun 626846b
Adding new example chapter.
Oxyjun 884dab4
Adding temporary code snippet for workaround.
Oxyjun 4e66eb9
Fixing code block language
Oxyjun aa1f110
Update src/content/docs/durable-objects/examples/reference-do-name-us…
Oxyjun 12d91d9
update the code example
harshil1712 8f9a85c
Quick review + removing TypeScriptExample to avoid
Oxyjun a7206a0
Fixing linebreaks
Oxyjun 167cff9
remove example for D1
harshil1712 75f25c6
Shortening title
Oxyjun 99beb00
Merge branch 'jun/do/idFromName-example' of github.com:cloudflare/clo…
Oxyjun ba418b1
minor updates
harshil1712 5e8f2f8
Merge branch 'jun/do/idFromName-example' of github.com:cloudflare/clo…
harshil1712 c5b22d2
PCX review
Oxyjun cc3db5e
Apply suggestions from code review
Oxyjun e1fe994
Adding minor fix to trigger GH pipeline.
Oxyjun File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,16 @@ | ||
| --- | ||
| type: example | ||
| summary: TBC | ||
| tags: | ||
| - Hono | ||
| - D1 | ||
| pcx_content_type: example | ||
| title: Use `init` RPC call to boostrap you Durable Object | ||
| sidebar: | ||
| order: 13 | ||
| description: TBC | ||
|
|
||
| --- | ||
|
|
||
| import { TabItem, Tabs } from "~/components" | ||
|
|
57 changes: 57 additions & 0 deletions
57
src/content/docs/durable-objects/examples/reference-do-name-using-init.mdx
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,57 @@ | ||
| --- | ||
| type: example | ||
| summary: Access the name from within a Durable Object using `init` RPC call. | ||
| tags: | ||
| - Durable Objects | ||
| pcx_content_type: example | ||
| title: Reference a Durable Object name within the Durable Object class using `init` | ||
| sidebar: | ||
| order: 3 | ||
| description: Access the name from within a Durable Object using `init` RPC call. | ||
|
|
||
| --- | ||
|
|
||
| import { TabItem, Tabs, GlossaryTooltip, WranglerConfig } from "~/components" | ||
|
|
||
| Once you create a Durable Object using [`idFromName`](/durable-objects/api/namespace/#idfromname), you cannot access the the Durable Object [`name`](/durable-objects/api/id/#name) within the Durable Object class itself. | ||
|
|
||
| If you wish to access the Durable Object `name`, you can pass the string by using an `init` RPC method, and store it in the Durable Object class. | ||
|
|
||
| This example demonstrates how to perform this action. | ||
|
|
||
| ```ts | ||
| import { DurableObject, RpcTarget } from 'cloudflare:workers'; | ||
|
|
||
| export class MyDurableObject extends DurableObject<Env> { | ||
| doName: string | undefined = undefined; | ||
| constructor(ctx: DurableObjectState, env: Env) { | ||
| super(ctx, env); | ||
| } | ||
|
|
||
| async init(doName: string | undefined) { | ||
| this.doName = doName; | ||
| // Return an RpcTarget that implements the methods | ||
|
|
||
| console.log('init', doName); | ||
| return new (class extends RpcTarget { | ||
| async sayHello(name: string) { | ||
| return `Hello, ${name}!`; | ||
| } | ||
| })(); | ||
| } | ||
| } | ||
|
|
||
| export default { | ||
| async fetch(request, env, ctx): Promise<Response> { | ||
| let id: DurableObjectId = env.MY_DURABLE_OBJECT.idFromName(new URL(request.url).pathname); | ||
| let stub = env.MY_DURABLE_OBJECT.get(id); | ||
|
|
||
| // Note: no await on init() - it returns an RpcTarget immediately | ||
| const rpcTarget = stub.init(id.name); | ||
| // This is where the actual network call happens | ||
| const greeting = await rpcTarget.sayHello('world'); | ||
|
|
||
| return new Response(greeting, { status: 200 }); | ||
| }, | ||
| } satisfies ExportedHandler<Env>; | ||
| ``` | ||
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.