adopted-ember-addons / adopted-ember-addons/ember-changeset
Warp Drive Schema throws errors
- 主要言語
- JavaScript
- スター
- 425
- フォーク
- 136
- PR マージ指標
- 30日以内にマージされた PR はありません
説明
We are trying to migrate Ember Data Model to Warp Drive Schema (Legacy Mode).
```Ts
// data/page/schema.ts
import { withDefaults } from '@warp-drive/legacy/model/migration-support';
export const PageSchema = withDefaults({
type: 'page',
fields: [
{ name: 'title', kind: 'attribute', type: 'string' },
{ name: 'body', kind: 'attribute', type: 'string' }
]
});
```
```Ts
// services/store.ts
import { useLegacyStore } from '@warp-drive/legacy';
import { JSONAPICache } from '@warp-drive/json-api';
import { PageSchema } from 'web-app/data/page/schema';
const Store = useLegacyStore({
legacyRequests: true,
linksMode: false,
cache: JSONAPICache,
schemas: [
PageSchema
],
handlers: []
});
export default Store;
export type StoreService = InstanceType;
```
```Ts
// route.ts
import Route from '@ember/routing/route';
import { service } from '@ember/service';
import { findRecord } from '@warp-drive/utilities/json-api';
import type { StoreService } from 'web-app/services/store';
export default class AdminPageEditRoute extends Route {
@service declare store: StoreService;
async model(params: { page_id: string }) {
const { content } = await this.store.request(
findRecord('page', params.page_id)
);
return content.data;
}
}
```
```Ts
// validations/page.ts
import {
validatePresence,
validateLength
} from 'ember-changeset-validations/validators';
export default {
title: [
validatePresence(true), //
validateLength({ min: 3, max: 100 })
],
body: [
validatePresence(true), //
validateLength({ min: 25, max: 100000 })
]
};
```
```Gts
// component
import Component from '@glimmer/component';
import changeset from 'ember-changeset/helpers/changeset';
import { service } from '@ember/service';
import validations from 'web-app/validations/page';
interface Signature {
Args: {
page: Page;
};
}
export default class PageForm extends Component {
validations = validations;
{{#let (changeset @page this.validations) as |changesetSchema|}}
{{changesetSchema}}
{{/let}}
}
```
We get this error:
```console
Uncaught (in promise) Error: No field named __changeset__ on page
```
# Versions
```json
"ember-cli": "~6.8.0",
"ember-source": "~6.8.0",
"ember-changeset": "^5.0.0",
"ember-changeset-validations": "^5.0.0",
"@warp-drive/build-config": "^5.8.2",
"@warp-drive/ember": "^5.8.2",
"@warp-drive/json-api": "^5.8.2",
"@warp-drive/legacy": "^5.8.2",
"@warp-drive/utilities": "^5.8.2",
"vite": "^7.3.1"
```
コントリビューションガイド
評価
この issue はまだ評価されていません。