Compare commits
9 Commits
Author | SHA1 | Date | |
---|---|---|---|
138290a7b8 | |||
036cafc282 | |||
7764ba5cb8 | |||
7f77634ea1 | |||
acf3c29939 | |||
925cd639b4 | |||
af8de58dcd | |||
f39703b8d9 | |||
fa1951b4dd |
34
README.md
34
README.md
@ -1,5 +1,7 @@
|
||||
# smartdata
|
||||
|
||||
> Note: Still in Beta
|
||||
|
||||
smartdata is a ODM that adheres to TypeScript practices and uses classes to organize data.
|
||||
It uses MongoDB as persistent storage.
|
||||
|
||||
@ -27,22 +29,26 @@ let myDb2 = new smartdata.Db('someConnectionUrl')
|
||||
|
||||
myDb1.connect()
|
||||
myDb2.connect()
|
||||
|
||||
// continues in next block...
|
||||
```
|
||||
|
||||
### class Collection
|
||||
### class DbCollection
|
||||
represents a collection of objects.
|
||||
A collection is defined by the object class (that is extending smartdata.dbdoc) it respresents
|
||||
|
||||
So to get to get access to a specific collection you document
|
||||
```typescript
|
||||
class myObject extends DbDoc {
|
||||
// continues from the block before...
|
||||
|
||||
class myObject extends smartdata.DbDoc { // read the next block about DbDoc
|
||||
property1:string
|
||||
property2:number
|
||||
constructor(optionsArg:{
|
||||
queryArg?:any,
|
||||
dataArg?:{
|
||||
property1:string,
|
||||
property2:string
|
||||
property2:number
|
||||
}
|
||||
}) {
|
||||
super(this,optionsArg)
|
||||
@ -55,9 +61,29 @@ let myCollection = myDb1.getCollection(myObject)
|
||||
This is done for you!!!
|
||||
|
||||
### class DbDoc
|
||||
represents a individual document in a collection.
|
||||
represents a individual document in a collection
|
||||
and thereby is ideally suited to extend the class you want to actually store.
|
||||
|
||||
DbDoc extends your class with the following methods:
|
||||
|
||||
* `.save()` will save (or update) the object you call it on only. Any referenced non-savable objects will not get stored.
|
||||
* `.saveDeep()` does the same like `.save()`.
|
||||
In addition it will look for properties that reference an object
|
||||
that extends DbDoc as well and call .saveDeep() on them as well.
|
||||
Loops are prevented
|
||||
|
||||
So now we can **store** instances of classes to Db...
|
||||
How do we **get** a new class instance from a Doc in the DB?
|
||||
Easy! Take a look at the constructor. When you specify `optionsArg.queryArg`
|
||||
smartdata will fill in the data from the database!
|
||||
But when you specify a `optionsArg.dataArg` instead
|
||||
the data for the class is taken from there :)
|
||||
|
||||
## TypeScript
|
||||
How does TypeScript play into this?
|
||||
Since you define your classes in TapeScript and types flow through smartdata in a generic way
|
||||
you should get all the Intellisense and type checking you love when using smartdata.
|
||||
smartdata itself also bundles typings.
|
||||
So you don't need to install any additional types whenimporting smartdata.
|
||||
|
||||
[](https://push.rocks)
|
||||
|
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "smartdata",
|
||||
"version": "1.0.9",
|
||||
"version": "1.0.13",
|
||||
"description": "do more with data",
|
||||
"main": "dist/index.js",
|
||||
"typings": "dist/index.d.ts",
|
||||
|
Reference in New Issue
Block a user