Here are some parallels your example:
A. ActiveRecord:
```
post = Post.find_by(author: "John Smith") post.author.email = "john@example.com" post.save
```
B. Instant:
```
db.transact( tx.users[lookup('author', 'John Smith')].update({ email: 'john@example.com' }), );
```
> In React/Vue/Solid, I want to say express things like this:
Here's what the React/Vue code would look like:
```
function BlogPostDetailComponent(props) {
// `useQuery` is equivelant to the `subscribe` that you mentioned:
const { isLoading, data, error } = db.useQuery({posts: {author: {}, $: {where: { id: props.id }, } })
if (isLoading) return ...
if (error) return ..
function updateAuthorName(newName) {
// `db.transact` does what you mentioned:
// it attempts to persist any pending changes to browser storage, then
// sync to remote db, rolling back changes if there's a failure, and
// gives an easy way to show an error toast if the update failed. (it's awaitable)
db.transact(
tx.authors[author.id].update({name: newName})
)
}
return (
<>
...
</>
)
}```