1
0
mirror of https://github.com/jbranchaud/til synced 2026-01-03 07:08:01 +00:00

Add Add Item To An Array Of References In Sanity as a JavaScript TIL

This commit is contained in:
jbranchaud
2023-11-03 10:59:04 -05:00
parent 5d61f4c9d7
commit 8789d89e31
2 changed files with 30 additions and 1 deletions

View File

@@ -10,7 +10,7 @@ pairing with smart people at Hashrocket.
For a steady stream of TILs, [sign up for my newsletter](https://crafty-builder-6996.ck.page/e169c61186). For a steady stream of TILs, [sign up for my newsletter](https://crafty-builder-6996.ck.page/e169c61186).
_1346 TILs and counting..._ _1347 TILs and counting..._
--- ---
@@ -402,6 +402,7 @@ _1346 TILs and counting..._
### JavaScript ### JavaScript
- [Accessing Arguments To A Function](javascript/accessing-arguments-to-a-function.md) - [Accessing Arguments To A Function](javascript/accessing-arguments-to-a-function.md)
- [Add Item To An Array Of References In Sanity](javascript/add-item-to-an-array-of-references-in-sanity.md)
- [Basic Date Formatting Without A Library](javascript/basic-date-formatting-without-a-library.md) - [Basic Date Formatting Without A Library](javascript/basic-date-formatting-without-a-library.md)
- [Character Codes from Keyboard Listeners](javascript/character-codes-from-keyboard-listeners.md) - [Character Codes from Keyboard Listeners](javascript/character-codes-from-keyboard-listeners.md)
- [Check Classes On A DOM Element](javascript/check-classes-on-a-dom-element.md) - [Check Classes On A DOM Element](javascript/check-classes-on-a-dom-element.md)

View File

@@ -0,0 +1,28 @@
# Add Item To An Array Of References In Sanity
Let's say we have an existing record in our Sanity dataset. The schema for that
record allows for an array of references to another type of record. As part of
programmatically importing some data, we need to tie some records together by
adding to that array of references.
We've already set up our [Sanity client](https://www.sanity.io/docs/js-client)
(via the JavaScript SDK). We have an `_id` for the record we want to patch. We
have a `resourceId` for the resource that we want to _reference_ in the array.
Here is how we perform that `patch`:
```javascript
await sanityClient
.patch(_id)
.setIfMissing({resources: []})
.append('resources', [{_type: 'reference', _ref: resourceId}])
.commit({autoGenerateArrayKeys: true})
```
1. We give it the `_id` of the record we want to `patch`.
2. We set our array of `resources` to an empty array (`[]`) if it hasn't
already been set.
3. We `append` to the `resources` array with an array containing a single item,
a reference to our resource.
4. We `commit` the changes with the directive that Sanity should auto-generate
the `_key` value for any new array items.