Giter Club home page Giter Club logo

electron-db's Introduction

electron-db


Build Status NPM version NPM downloads

Flat file database solution for electron and other Nodejs apps.

electron-db is an npm library that let you simplify database creation and operation on a json file.

The json file is saved on the application folder or you can specify the location for the database to be created. From version 0.10.0, the user has the option to save the database table anywhere they chose.

The only difference with the default location is that, the user have to pass the string location as the second argument to any function to be used (this is optional if you want to control the database location).

The table format contained in the table_name.json should be in the form of

{
  "table_name": [
    {
      "field1": "Value of field 1",
      "field2": "Value of field 2",
      ...
    }
  ]
}

Important: The script that uses this library should be run with electron command first in order to create the directory on the user data folder (when not using a custom directory for the database). The name that will be used for the app directory will be what was indicated in the package.json as name. If this is not set, the name property will be used.

Installation

The preferred way of installation is to install it locally on the application.

npm install electron-db --save

Creating Table

Creates a json file [table-name].js inside the application userData folder.

In Windows, the application folder should be in C:\Users\[username]\AppData\Roaming\[application name]

const db = require('electron-db');
const { app, BrowserWindow } = require("electron");

db.createTable('customers', (succ, msg) => {
  // succ - boolean, tells if the call is successful
  console.log("Success: " + succ);
  console.log("Message: " + msg);
})

/*
	Output:
    	Success: true
        Message: Success!

	Result file (customers.json):
    {
    	"customers": []
    }
*/

Creating Table specifying the Location

The custom location, if desired, shall be passed as the second argument and the remaining arguments are the same (if any) on a specific function.

const path = require('path')

// This will save the database in the same directory as the application.
const location = path.join(__dirname, '')

db.createTable('customers', location, (succ, msg) => {
  // succ - boolean, tells if the call is successful
  if (succ) {
    console.log(msg)
  } else {
    console.log('An error has occured. ' + msg)
  }
})

Inserting Object/Data to Table

Insert an object into the list of row/data of the table.

To insert to a custom location, pass the custom location as the second argument as shown in the sample above. But do not forget to check if the database is valid.

let obj = new Object();

obj.name = "Alexius Academia";
obj.address = "Paco, Botolan, Zambales";

if (db.valid('customers')) {
  db.insertTableContent('customers', obj, (succ, msg) => {
    // succ - boolean, tells if the call is successful
    console.log("Success: " + succ);
    console.log("Message: " + msg);
  })
}

/*
	Output:
    	Success: true
        Message: Object written successfully!

    Result file (customers.json):
    {
      "customers": [
        {
          "name": "Alexius Academia",
          "address": "Paco, Botolan, Zambales"
        }
      ]
    }

*/

For the database table at custom location

For the implementation of this new feature, always put the location string as second argument for all the functions. (The directory string must end with appropriate slashes, forward slash for unix and back slash with escape string for Windows) (e.g. Windows: 'C:\\databases\\', Unix: '/Users/<username>/Desktop/'). For good practice, use the path.join method to let the OS apply its directory separator automatically.

Get all rows

Get all the rows for a given table by using the callback function.

const db = require('electron-db');
const electron = require('electron');

const app = electron.app || electron.remote.app;

db.getAll('customers', (succ, data) => {
  // succ - boolean, tells if the call is successful
  // data - array of objects that represents the rows.
})

Get Row(s) from the table

Get row or rows that matched the given condition(s) in WHERE argument

const db = require('electron-db');
const electron = require('electron');

const app = electron.app || electron.remote.app;

db.getRows('customers', {
  address: "Paco, Botolan, Zambales",
  name: 'Alexius Academia'
}, (succ, result) => {
  // succ - boolean, tells if the call is successful
  console.log("Success: " + succ);
  console.log(result);
})

/*
	Output:
    	Success: true
        [ { name: 'Alexius Academia',
    address: 'Paco, Botolan, Zambales',
    id: 1508419374272 } ]
*/

Update Row

Updates a specific row or rows from a table/json file using a WHERE clause.

const db = require('electron-db');
const electron = require('electron');

const app = electron.app || electron.remote.app;

let where = {
  "name": "Alexius Academia"
};

let set = {
  "address": "Paco, Botolan, Zambales"
}

db.updateRow('customers', where, set, (succ, msg) => {
  // succ - boolean, tells if the call is successful
  console.log("Success: " + succ);
  console.log("Message: " + msg);
});

Search Records

Search a specific record with a given key/field of the table. This method can search part of a string from a value.

In this example, I have a table named 'customers', each row has a 'name' property. We are now trying to search for a name in the rows that has the substring 'oh' in it.

const db = require('electron-db');
const electron = require('electron');

const app = electron.app || electron.remote.app;

let term = "oh";

db.search('customers', 'name', term, (succ, data) => {
  if (succ) {
    console.log(data);
  }
});

// Output
/*
[ { name: 'John John Academia',
    address: 'Paco, Botolan, Zambales',
    id: 1508419430491 } ]
*/

Delete Records

Delete a specific record with a given key-value pair from the table.

const db = require('electron-db');
const electron = require('electron');

db.deleteRow('customers', {'id': 1508419374272}, (succ, msg) => {
  console.log(msg);
});

Get data for specific field

Get all the field given in a specific key. This will return all values on each row that has the key given in the parameter.

const key = 'name'

db.getField(dbName, dbLocation, key, (succ, data) => {
    if (succ) {
      console.log(data)
    }
})

Clear all Records

Clear all the records in the specified table.

// Delete all the data
db.clearTable(dbName, dbLocation, (succ, msg) => {
    if (succ) {
        console.log(msg)

        // Show the content now
        db.getAll(dbName, dbLocation, (succ, data) => {
            if (succ) {
                console.log(data);
            }
        });
    }
})

Count Records

Count the number of rows for a given table.

db.count(dbName, dbLocation, (succ, data) => {
    if (succ) {
        console.log(data)
    } else {
        console.log('An error has occured.')
        console.log(data)
    }
})

For contributions, please see the CONTRIBUTE.md file. Thank you.

electron-db's People

Contributors

alexiusacademia avatar isidoor avatar jvs-leonardow avatar kant avatar mrddter avatar parangon avatar sihamouda avatar skullsneeze avatar vikashloomba avatar xortrike avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

electron-db's Issues

fs.existsSync is not a function

I get this error when I try to create a table:
fs.existsSync is not a function

What do I do wrong?

const db = require('electron-db') db.createTable('tasks', (succ, msg) => { // succ - boolean, tells if the call is successful console.log("Success: " + succ) console.log("Message: " + msg) })

specify the documentation of the attributes of each of the functions to have a documentation section

updateRow()

  • Update a row or record which satisfies the where clause
  • @param {[string]} arguments[0] [Table name]
  • @param {string} arguments[1] [Location of the database file] (Optional)
  • @param {[object]} arguments[2] [Objet for WHERE clause]
  • @param {[object]} arguments[3] [Object for SET clause]
  • @param {Function} arguments[4] [Callback function]

createTable()

  • Create a table | a json file
  • The second argument is optional, if ommitted, the file
  • will be created at the default location.
  • @param {[string]} arguments[0] [Table name]
  • @param {[string]} arguments[1] [Location of the database file] (Optional)
  • @param {[function]} arguments[2] [Callbak ]

valid()

  • @param {string} arguments[0] [Table name]
  • @param {string} arguments[1] [Location of the database file] (Optional)\

insertTableContent()

  • Insert object to table. The object will be appended with the property, id
  • which uses timestamp as value.
  • There are 3 required arguments.
  • @param {string} arguments[0] [Table name]
  • @param {string} arguments[1] [Location of the database file] (Optional)
  • @param {string} arguments[2] [Row object]
  • @param {Function} arguments[3] [Callback function]

getAll()

  • @param {string} arguments[0] [Table name]
  • @param {string} arguments[1] [Location of the database file] (Optional)
  • @param {Function} arguments[2] [callback function]

getField()

  • Find rows of a given field/key.
  • @param {string} arguments[0] Table name
  • @param {string} arguments[1] Location of the database file (Optional)
  • @param {string} arguments[2] They fey/field to retrieve.

clearTable()

  • @param {string} arguments[0] [Table name]
  • @param {string} arguments[1] [Location of the database file] (Optional)
  • @param {Function} arguments[2] [callback function]

count()

  • Count the number of rows for a given table.
  • @param {string} FirstArgument Table name
  • @param {string} SecondArgument Location of the database file (Optional)
  • @param {callback} ThirdArgument Function callback

getRows()

  • Get row or rows that matched the given condition(s) in WHERE argument
  • @param {string} FirstArgument Table name
  • @param {string} SecondArgument Location of the database file (Optional)
  • @param {object} ThirdArgument Collection of conditions to be met
{
     key1: value1,
     key2: value2,
     ...
}
  • @param {callback} FourthArgument Function

updateRow()

  • Update a row or record which satisfies the where clause
  • @param {[string]} arguments[0] [Table name]
  • @param {string} arguments[1] [Location of the database file] (Optional)
  • @param {[object]} arguments[2] [Objet for WHERE clause]
  • @param {[object]} arguments[3] [Object for SET clause]
  • @param {Function} arguments[4] [Callback function]

search()

  • Searching function
  • @param {string} arguments[0] Name of the table to search for
  • @param {string} arguments[1] [Location of the database file] (Optional)
  • @param {string} arguments[2] Name of the column/key to match
  • @param {object} arguments[3] The part of the value of the key that is being lookup
  • @param {function} arguments[4] Callback function

deleteRow()

  • Delete a row specified.
  • @param {*} tableName
  • @param {string} arguments[1] [Location of the database file] (Optional)
  • @param {*} where
  • @param {*} callback

insertTableContent is not working in loop

This is my code -

const arr = ['product_1', 'product_2', 'product_3', 'product_4', 'product_5'];
    arr.map((product, i) => {
      const obj = {};
      obj.image_name = product;
      obj.index = i;
      console.log('obj', obj);
      return db.insertTableContent('customers', obj, (succ, msg) => {
        console.log(`Success: ${succ}`);
        console.log(`Message: ${msg}`);
      });
    });

This is Output -
error_code

only single record is inserted in customers.json

updateRow updates only 1 row

Hi,
Version 0.15.4.
updateRow works only if 1 or all rows are found, and it updates only the last row.

Here the actual wrong code:
l418:

function updateRow() {
    let tableName = arguments[0];
    var fname = '';
    var where;
    var set;
    var callback;

    if (arguments.length === 4) {
        fname = path.join(userData, tableName + '.json');
        where = arguments[1];
        set = arguments[2];
        callback = arguments[3];
    } else if (arguments.length === 5) {
        fname = path.join(arguments[1], arguments[0] + '.json');
        where = arguments[2];
        set = arguments[3];
        callback = arguments[4];
    }

    let exists = fs.existsSync(fname);

    let whereKeys = Object.keys(where);
    let setKeys = Object.keys(set);

    if (exists) {
        let table = JSON.parse(fs.readFileSync(fname));
        let rows = table[tableName];

        let matched = 0; // Number of matched complete where clause
        let matchedIndex = 0;

        for (var i = 0; i < rows.length; i++) {

            for (var j = 0; j < whereKeys.length; j++) {
                // Test if there is a matched key with where clause and single row of table
                if (rows[i].hasOwnProperty(whereKeys[j])) {
                    if (rows[i][whereKeys[j]] === where[whereKeys[j]]) {
                        matched++;
                        matchedIndex = i;
                    }
                }
            }
        }

        if (matched === whereKeys.length) {
            // All field from where clause are present in this particular
            // row of the database table
            try {
                for (var k = 0; k < setKeys.length; k++) {
                    // rows[i][setKeys[k]] = set[setKeys[k]];
                    rows[matchedIndex][setKeys[k]] = set[setKeys[k]];
                }

                // Create a new object and pass the rows
                let obj = new Object();
                obj[tableName] = rows;

                // Write the object to json file
                try {
                    fs.writeFileSync(fname, JSON.stringify(obj, null, 2), (err) => {

                    })

                    callback(true, "Success!")
                    return;
                } catch (e) {
                    callback(false, e.toString());
                    return;
                }

                callback(true, rows);
            } catch (e) {
                callback(false, e.toString());
                return;
            }
        } else {
            callback(false, "Cannot find the specified record.");
            return;
        }


    } else {
        callback(false, 'Table file does not exist!');
        return;
    }
}

Here the fix:

function updateRow() {
    let tableName = arguments[0];
    var fname = '';
    var where;
    var set;
    var callback;

    if (arguments.length === 4) {
        fname = path.join(userData, tableName + '.json');
        where = arguments[1];
        set = arguments[2];
        callback = arguments[3];
    } else if (arguments.length === 5) {
        fname = path.join(arguments[1], arguments[0] + '.json');
        where = arguments[2];
        set = arguments[3];
        callback = arguments[4];
    }

    let exists = fs.existsSync(fname);

    let whereKeys = Object.keys(where);
    let setKeys = Object.keys(set);

    if (exists) {
        let table = JSON.parse(fs.readFileSync(fname));
        let rows = table[tableName];

        let nbRowsMatched = 0;
        let nbKeysMatchedPerRow = 0;
        let rowsMatchedIndexes = [];

        for (var i = 0; i < rows.length; i++) {
			nbKeysMatchedPerRow = 0;
            for (var j = 0; j < whereKeys.length; j++) {
                // Test if there is a matched key with where clause and single row of table
                if (rows[i].hasOwnProperty(whereKeys[j])) {
                    if (rows[i][whereKeys[j]] === where[whereKeys[j]]) {
                        nbKeysMatchedPerRow++;
                    }
                }
            }
			if(nbKeysMatchedPerRow == whereKeys.length){
				nbRowsMatched++;
                rowsMatchedIndexes.push(i);
			}
        }

        if (nbRowsMatched > 0) {
            // All field from where clause are present in this particular
            // row of the database table
            try {
                for (var k = 0; k < rowsMatchedIndexes.length; k++) {
					var rowToUpdate = rows[rowsMatchedIndexes[k]];
					for (var l = 0; l < setKeys.length; l++) {
						var keyToUpdate = setKeys[l];
						rowToUpdate[keyToUpdate] = set[keyToUpdate];
					}
				}

                // Create a new object and pass the rows
                let obj = new Object();
                obj[tableName] = rows;

                // Write the object to json file
                try {
                    fs.writeFileSync(fname, JSON.stringify(obj, null, 2), (err) => {

                    })

                    callback(true, "Success! "+nbRowsMatched+" row(s) updated.")
                    return;
                } catch (e) {
                    callback(false, e.toString());
                    return;
                }

                callback(true, rows);
            } catch (e) {
                callback(false, e.toString());
                return;
            }
        } else {
            callback(false, "Cannot find the specified record.");
            return;
        }


    } else {
        callback(false, 'Table file does not exist!');
        return;
    }
}

I tested and it seems to work well like this.

Best Regards.

Problem app.asar.unpacked

An error occurred while trying to read the package.json file, it seems to me that it is not able to read in the ../resources/app.asar directory.
Here's the line I'm compiling.
electron-packager. Neoprinter --icon = icon.png --platform = linux --arch x64 --out dist / --overwrite
Follow the error
Seleção_060

It seems that you are missing the dependency to read packages
asar

commenting on the following lines from the index.js file, the application worked correctly after compiling

let appName = 'Neoprinter';
/* if (JSON.parse(fs.readFileSync('package.json', 'utf-8')).productName) { appName = JSON.parse(fs.readFileSync('package.json', 'utf-8')).productName; }else{ appName = JSON.parse(fs.readFileSync('package.json', 'utf-8')).name; } */

I need help

Feature Request: tableExists method

Hi,

Liking the module so far. Would really appreciate either a function for checking if the table exists or a change to the createTable method where if the table already exists it is counted as a success as that is the goal.

Thanks

React

Can i use it from React component?

Table exists?

It would be nice if there was a method for checking the existence of a table.
Because if I try to check a non-existing table using the "valid" method, I get an error.
Please add method for check table or extend the "valid" method, adding this checking.
if ( fs.existsSync(fName) === false ) { return false; }

i got a problem at getRow(s)

db file is ‘novel.json’, it's no data.

cond:

 { author: 'xx', source: 'xxx.cc', title: 'test' }

Query:

db.getRows('novel', location, cond, (succ, msg) => {
    console.log(succ);
    console.log(msg);
}

Output:

true
[]

Why?

Cannot find the specified record.

Hi.I can't understand why this is happening.
sorry for bad english

Code:

//about such a code is transmitted

var e = { 
            coords:[ [ 40.512722476180485, 68.77368450164796 ],
                        [ 40.50528313168216, 68.77432823181154 ],
                        [ 40.509590221186414, 68.78304004669191 ] ],
            info: [ 'second', '#2c8cd3' ],
            id: 1542267016734 
          }

  let where = {
    "id": e[0]
  };

  let set = {
    "info": e[1]
  };
  db.updateRow('polyZones',{"id": e[0]},{"info": e[1]},function(succ,msg){
    console.log(succ);
    console.log(msg);
  });

JSON Structure

{
  "polyZones": [
    {
      "coords": [
        [
          40.515234699969355,
          68.75501632690431
        ],
        [
          40.50381474249354,
          68.75334262847902
        ],
        [
          40.510960600748795,
          68.76321315765382
        ]
      ],
      "info": [
        "first",
        "#ee4811"
      ],
      "id": 1542267004698
    },
    {
      "coords": [
        [
          40.512722476180485,
          68.77368450164796
        ],
        [
          40.50528313168216,
          68.77432823181154
        ],
        [
          40.509590221186414,
          68.78304004669191
        ]
      ],
      "info": [
        "second",
        "#2c8cd3"
      ],
      "id": 1542267016734
    }
  ]
}

so, when i request item with id "1542267004698"( this is the first object in the json list)
request returns true (the object exists).
but as soon as I search for an object with a different id it returns false(Cannot find the specified record).

what could be the problem? Maybe there is something wrong in the structure? Thanks for attention. And yes, sorry again for my English: 3

Search Record

Add a search feature implementation to search for records within a specific field/key.

[Feature]- Add unique check during insert and update

Hi,
I require a feature in my project which will check where its an unique value before insertion or updation for specific columns, like UNIQUE and PRIMARY KEY constraints in MYSQL.
happy to say i have updated some code and i was able to archive this feature.

Inserting Object/Data to Table with unique check

Insert an object into the list of row/data of the table with unique check.

To insert to alocation, pass the location as the second argument
as shown in the sample above. But do not forget to check if the database is valid.

let obj = new Object();

obj.name = "Alexius Academia";
obj.address = "Paco, Botolan, Zambales";

if (db.valid('customers')) {
  db.insertWithUniqueCheck('customers', obj,['name'], (succ, msg) => {
    // succ - boolean, tells if the call is successful
    console.log("Success: " + succ);
    console.log("Message: " + msg);
  })
}

/*
	Output:
    	Success: true
        Message: Object written successfully!

	Success: false
        Message: A UNIQUE CONSTRAINT VIOLATION
        

Broken Json issue

sometimes i get this broken json issue normally if two workers try write at the same time i guess:

{ "accounts": [ { "uuid": "7q9cMDq1ax9i2iEkKenKtf", "firstName": "Gene", "lastName": "West", "gender": "male", "email": "[email protected]", "password": "JYoETNE7SjdkIyO", "avatarSet": false, "passwordChanged": false, "listening": false, "id": 1625479565120 } ] <------ extra square bracket } ] }

is there any function to repair the json should this issue happen for any reason

getAll return false

when I insert table success, I getAll data immediately, but getAll return false.
db.insertTableContent(obj).then(res => {
db.getAll('tables') // return false
})

"update" seems do not work well

// 修改节点名称
ipc.on('renameNode', (event, arg) => {
console.log('renameNode...')
console.log('id: ' + arg.id)
console.log('text: ' + arg.text)

let where = {
    'id': arg.id
}

let set = {
    'text': arg.text
}

db.updateRow(ORGTABELE, where, set, (succ, msg) => {
    console.log('update...')
    console.log('succ: ' + succ)
    console.log('msg: ' + msg)
})

})

------------------output --------------------------------

renameNode...
id: 1528010777034
text: dfd
update...
succ: false
msg: Cannot find the specified record.
update...
succ: false
msg: Cannot find the specified record.

Feature Request: Return ID after insertTableContent

It would be very useful if insertTableContent also returned the newly created id for the record for step-by-step creation.

The reason is that every other call requires the id (for obvious reasons), and without receiving it in reply, the process goes...

  1. Get all records.
  2. Figure out which record is the one newly added to get the id.
  3. Run update row to update it further.

Where as if insertTableContent returned that id, you save a lot of running around.

Feature Request: Allow functions as where statements

Hi,

I have the following data structure and want to be able to get records where it has a tag e.g. string value in an array.

{ name: 'something', tags: ['test', 'test2'] }

I thought the most generic way of doing this would be to allow functions to be passed in as the where clause (much like .filter in js).

Thoughts?

Jareth

UpdateRow Error

UpdateRow function check first row only

for (var i = 0; i < rows.length; i++) { 
.
.
.
else {
        callback(false, "Cannot find the specified record.");
        return;
}

}

when it enter the else condition of "Cannot find the specified record" it execute return without continuing to check the remaining rows

Location custom doesn't work when packaging?

How does Location custom work when packaging? I create a location inside the src folder, in dev it works perfectly but when it does the packaging it doesn't work. I'm using Electron-React-Boilerplate

Typo in variable of valid() function

Hi,
Thanks for this great library. I believe there is a small typo in the valid() function that causes an error "ENOENT: no such file or directory" for me.

  if (arguments.length == 2) {
        // Given the database name and location
        const dbName = arguments[0]
        const dbLocation = arguments[1]
        var fName = path.join(dbLocation, dbName + '.json')
    } else if (arguments.length == 1) {
        const dbName = arguments[0]
        fname = path.join(userData, dbName + '.json')
    }

Last fname shall be fName instead. I am not familiar with git yet, so if you want to fix it...
Christian

delete function error

database design

{
    "files": [{
            "projectName": "Project1",
            "filePath": "/home/koramaz/Belgeler/htdocs/eticaret/css/owl.transitions.css",
            "fileName": "owl.transitions.css",
            "id": 1602791652333
        },
        {
            "projectName": "Project2",
            "filePath": "/home/koramaz/Masaüstü/Proman/images/delete.png",
            "fileName": "delete.png",
            "id": 1602791655161
        }
    ]
}

delete function

function deleteFile(fileName, projectName) {
    var deleteObject = new Object();
    deleteObject.fileName = fileName;
    deleteObject.projectName = projectName;


    console.log(fileName);
    db.deleteRow('files', appPath, deleteObject, (succ, msg) => {
        document.getElementById(fileName).remove();
        console.log(msg);
    });
}

When I send this object to the delete function, the deletion works inconsistently. Values ​​that do not match the parameter I sent are also deleted.

How would you remove a database item?

Hey, very good library so far, I really like the simplicity!

What I was not able to get working so far though is removing items from the database. The documentation does not include an example for that either.

[BUG] DeleteRow

Hello !

DeleteRow function is not working when there are multiple matchs to delete.

current code is :

for (let k = 0; k < matchedIndices.length; k++) { rows.splice(matchedIndices[k], 1); }

matchedIndices = [0,1,2]
rows: [ a, b, c ]

  1. first splice delete a, rows => [b, c]
  2. second splice delete c, rows = [b]
  3. last splice delete nothing

maybe this should correct the code

for (let k = matchedIndices.length; k >= 0; k--) { rows.splice(matchedIndices[k], 1); }

BUG - getAll example uses incorrect syntax

I found that the example for the getAll method uses an incorrect syntax.

Current syntax:

db.getAll('customers', (succ, data)) {
  // succ - boolean, tells if the call is successful
  // data - array of objects that represents the rows.
}

Corrected syntax:

db.getAll('customers', (succ, data) => {
  // succ - boolean, tells if the call is successful
  // data - array of objects that represents the rows.
});

Embedded json

Hello.

How can I update row "lala" in electron-db, if I have this:

"equipment": { "lala" :{ "id": "1525272872463", "group": "oil", "name": "Мотопомпа «KLINER»", "inventory": "00-000005/69", "factory": "I205NZP", "release": "2012", "lifetime": "10", "verification": "02/06/2012", "dateOfVerification": "01/01/2020", "stock": "1", "timetable": "1", "notes": "" },

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.