data icon indicating copy to clipboard operation
data copied to clipboard

Typing issue when returning relation properties

Open SalahAdDin opened this issue 4 months ago • 0 comments

So, we have the following database:

const db = factory({
  article: {
    id: primaryKey(() => _articleId++),
    title: () => title,
    slug: () => faker.helpers.slugify(title),
    author: nullable(manyOf("author")),
    thumbnail: oneOf("image"),
    category: oneOf("category"),
    createdDate: () => faker.date.anytime(),
    publishedDate: () => faker.date.anytime(),
    introduction: () => faker.lorem.text(),
    content: {
      // TODO: https://github.com/mswjs/data/issues/299
      root: () => mockRichText(),
    },
    hero: {
      url: () => faker.image.url({ width, height }),
      alt: () => faker.lorem.text(),
      width: () => width,
      height: () => height,
      caption: {
        source: () => faker.lorem.word(),
        description: () => faker.lorem.text(),
      },
    },
    // content: () => ({ root: () => mockRichText() }),
    source: nullable(() => faker.lorem.word()),
    tags: () => mockArray(6, () => faker.lorem.word()),
    continue: oneOf("relatedArticle"),
    related: nullable(manyOf("relatedArticle")),
  },
...
  category: {
    id: primaryKey(() => _categoryId++),
    title: () => categoryTitle,
    slug: () => faker.helpers.slugify(categoryTitle),
  },
...
});

And we want to implement a function to return all articles' slug and their categories' slugs as well:

export const articlePaths = () =>
  db.article.findMany({}).map((a) => ({
    category: a.category.slug,
    slug: a.slug,
  }));

Unfortunately, it fails on typing: image

Why is this?

When assigning only the category, it does not give any issue.

It should not give any issue when getting relation properties.

SalahAdDin avatar Feb 28 '24 03:02 SalahAdDin