Skip to main content

getKnowledge

codebolt.dbmemory.getKnowledge(key: string): Promise<MemoryGetResponse><MemoryGetResponse>
Retrieves a value from the in-memory database by key. Returns the stored data along with response metadata.

Parameters

NameTypeDescription
keystringThe unique key of the value to retrieve. Supports namespaced keys (e.g., 'user:123', 'config:theme').

Returns:

 Promise<MemoryGetResponse><MemoryGetResponse>
A promise that resolves with the response containing the retrieved data, response type, and metadata.

Description

The getKnowledge function retrieves data from the in-memory database using a unique key. It returns the stored value along with response metadata, and handles non-existent keys gracefully.

Usage

const result = await codebolt.dbmemory.getKnowledge(key);

Examples

// Retrieve user information
const getResult = await codebolt.dbmemory.getKnowledge('user:123');

console.log('Response type:', getResult?.type);
console.log('Data found:', !!getResult?.data);
console.log('User name:', getResult?.data?.name || 'Not found');
console.log('User age:', getResult?.data?.age || 'Not found');

// Output:
// Response type: memoryGetResponse
// Data found: true
// User name: John Doe
// User age: 30

Response Format

Success Response (Data Found)

{
type: 'memoryGetResponse', // Response type identifier
data: any // The retrieved data (can be any type)
}

Response for Non-Existent Key

{
type: 'memoryGetResponse', // Response type identifier
data: null // null when key doesn't exist
}

Handling Non-Existent Keys

The function handles missing keys gracefully:

const nonExistent = await codebolt.dbmemory.getKnowledge('non:existent:key');

console.log('Response type:', nonExistent?.type); // 'memoryGetResponse'
console.log('Data found:', !!nonExistent?.data); // false
console.log('Data value:', nonExistent?.data); // null

// Safe access with fallback values
const userName = nonExistent?.data?.name || 'Unknown User';
const userAge = nonExistent?.data?.age || 0;

Retrieving Updated Data

After updating data with addKnowledge, retrieve the latest version:

// Initial data
await codebolt.dbmemory.addKnowledge('user:123', {
name: 'John Doe',
age: 30,
role: 'developer'
});

// Update the data
await codebolt.dbmemory.addKnowledge('user:123', {
name: 'John Doe',
age: 31,
role: 'senior developer',
lastLogin: new Date().toISOString()
});

// Retrieve updated data
const retrievedUser = await codebolt.dbmemory.getKnowledge('user:123');

console.log('Updated age:', retrievedUser?.data?.age); // 31
console.log('Updated role:', retrievedUser?.data?.role); // 'senior developer'
console.log('Last login set:', !!retrievedUser?.data?.lastLogin); // true

Performance Testing

The function is optimized for fast retrieval:

// Performance test - retrieving 10 items
const retrieveStartTime = Date.now();
for (let i = 0; i < 10; i++) {
await codebolt.dbmemory.getKnowledge(`perf:item:${i}`);
}
const retrieveTime = Date.now() - retrieveStartTime;

console.log(`10 retrieve operations: ${retrieveTime}ms`);
console.log(`Average retrieve time: ${(retrieveTime / 10).toFixed(2)}ms`);

Data Type Handling

The function preserves data types during retrieval:

// String
const theme = await codebolt.dbmemory.getKnowledge('config:theme');
console.log(typeof theme?.data); // 'string'

// Number
const visits = await codebolt.dbmemory.getKnowledge('counter:visits');
console.log(typeof visits?.data); // 'number'

// Array
const tags = await codebolt.dbmemory.getKnowledge('tags:project');
console.log(Array.isArray(tags?.data)); // true

// Object
const settings = await codebolt.dbmemory.getKnowledge('settings:app');
console.log(typeof settings?.data); // 'object'

Common Usage Patterns

Safe Data Access

// Using optional chaining and fallback values
const user = await codebolt.dbmemory.getKnowledge('user:123');
const userName = user?.data?.name || 'Anonymous';
const userPreferences = user?.data?.preferences || {};

Checking Data Existence

const result = await codebolt.dbmemory.getKnowledge('some:key');
if (result?.data !== null && result?.data !== undefined) {
console.log('Data exists:', result.data);
} else {
console.log('No data found for key');
}

Use Cases

  • User Session Retrieval: Get current user session and preferences
  • Configuration Access: Retrieve application settings and configurations
  • State Management: Access stored application state
  • Cache Retrieval: Get cached data for performance optimization
  • Project Context: Retrieve project-specific information
  • Temporary Data Access: Get intermediate processing results

Integration with addKnowledge

This function works seamlessly with addKnowledge:

// Store data
await codebolt.dbmemory.addKnowledge('user:profile', { name: 'John', role: 'developer' });

// Retrieve data
const profile = await codebolt.dbmemory.getKnowledge('user:profile');
console.log('User role:', profile?.data?.role); // 'developer'