Generate massive amounts of fake contextual data for Notion
To mocking Notion API request data.
$ npm install @narkdown/notion-faker
const {NotionFaker} = require('@narkdown/notion-faker');
const notionFaker = new NotionFaker({
seedValue: 100,
locale: 'en',
});
- Create a Notion API Integration
- Create Page in Notion to add database.
- Create an Example Database with your own properties.
- Share Page with your integration
const {Client} = require('@notionhq/client');
const {NotionFaker} = require('@narkdown/notion-faker');
const NOTION_API_KEY = ''; // Notion API Key
const EXAMPLE_DATABASE_ID = ''; // Database for importing Property Scheme.
const PARENT_PAGE_ID = ''; // Parent page to create database.
const ROW_COUNT = 100; // ⚠️ Creating too many pages using the Notion API is a heavy task.
const notion = new Client({auth: NOTION_API_KEY});
const notionFaker = new NotionFaker();
(async () => {
const {properties: scheme} = await notion.databases.retrieve({
database_id: EXAMPLE_DATABASE_ID,
});
const {id: databaseId} = await notion.databases.create({
parent: {
page_id: PARENT_PAGE_ID,
},
title: notionFaker.database.title()()(),
properties: notionFaker.database.properties.propertiesByScheme(scheme),
icon: notionFaker.icon.emoji(),
cover: notionFaker.cover()(),
});
for (const _ of Array.from({length: ROW_COUNT})) {
await narkdown.pages.create({
parent: {database_id: TEST_DATABASE_ID},
properties: notionFaker.page.properties.propertiesByScheme(scheme),
});
}
})();
title(options?)
rich_text(options?)
number(options?)
select(options?)
multi_select(options?)
date(options?)
files(options?)
checkbox(options?)
url(options?)
email(options?)
phone_number(options?)
formula(options?)
relation(options)
rollup(options)
people(options?)
created_by(options?)
created_time(options?)
last_edited_by(options?)
last_edited_time(options?)
propertiesByScheme(propertyScheme)
title(methodPath?)(...args)(options?)
,rich_text(methodPath?)(...args)(options?)
,number(methodPath?)(...args)
,select(methodPath?)(...args)(options?)
,multi_select(methodPath?)(...args)(options?)
,date(methodPath?)(...args)(options?)
,files(methodPath?)(...args)(options?)
,checkbox()
,url()
,email(...args)
,phone_number(methodPath?)(...args)(options?)
,propertiesByScheme(propertyScheme)
Property | Supported |
---|---|
object |
❌ |
id |
❌ |
created_time |
❌ |
last_edited_time |
❌ |
title |
✅ |
icon |
✅ |
cover |
✅ |
properties |
✅ |
parent |
❌ |
url |
❌ |
Property | Supported |
---|---|
object |
❌ |
id |
❌ |
created_time |
❌ |
last_edited_time |
❌ |
archived |
❌ |
icon |
✅ |
cover |
✅ |
properties |
|
parent |
❌ |
url |
❌ |
Property | Page (Child of Database) | Page (Child of Page) |
---|---|---|
title |
✅ | ✅ |
rich_text |
✅ | ❌ |
number |
✅ | ❌ |
select |
✅ | ❌ |
multi_select |
✅ | ❌ |
date |
✅ | ❌ |
files |
✅ | ❌ |
checkbox |
✅ | ❌ |
url |
✅ | ❌ |
email |
✅ | ❌ |
phone_number |
✅ | ❌ |
formula |
❌ | ❌ |
relation |
❌ | ❌ |
rollup |
❌ | ❌ |
people |
❌ | ❌ |
created_by |
❌ | ❌ |
created_time |
❌ | ❌ |
last_edited_by |
❌ | ❌ |
last_edited_time |
❌ | ❌ |