{"id":4701,"url":"https://github.com/remobile/react-native-mongoose","last_synced_at":"2025-04-13T10:55:56.149Z","repository":{"id":57338450,"uuid":"45896486","full_name":"remobile/react-native-mongoose","owner":"remobile","description":null,"archived":false,"fork":false,"pushed_at":"2018-12-22T19:15:49.000Z","size":7,"stargazers_count":23,"open_issues_count":1,"forks_count":5,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-04-09T08:03:43.201Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/remobile.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2015-11-10T07:54:23.000Z","updated_at":"2022-05-15T04:03:18.000Z","dependencies_parsed_at":"2022-09-07T10:10:43.222Z","dependency_job_id":null,"html_url":"https://github.com/remobile/react-native-mongoose","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/remobile%2Freact-native-mongoose","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/remobile%2Freact-native-mongoose/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/remobile%2Freact-native-mongoose/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/remobile%2Freact-native-mongoose/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/remobile","download_url":"https://codeload.github.com/remobile/react-native-mongoose/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248703194,"owners_count":21148116,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-01-05T20:17:20.707Z","updated_at":"2025-04-13T10:55:56.107Z","avatar_url":"https://github.com/remobile.png","language":"JavaScript","funding_links":[],"categories":["Components"],"sub_categories":["Storage"],"readme":"# React Native mongoose (remobile)\nA AsyncStorage based mongoose like storage for react-native\n\n## Installation\n```sh\nnpm install @remobile/react-native-mongoose --save\n```\n\n## Usage\n\n### Example\n```js\n'use strict';\n\nvar React = require('react');\nvar ReactNative = require('react-native');\nvar {\n    StyleSheet,\n    View,\n    Image\n} = ReactNative;\nvar {\n    StyleSheet,\n    View,\n    AsyncStorage,\n} = ReactNative;\n\n\nvar Button = require('@remobile/react-native-simple-button');\nvar Mongoose = require('react-native-mongoose');\n\nconst DB_NAME = \"fang\";\nconst CLT_NAME = \"number\";\nmodule.exports = React.createClass({\n    componentDidMount() {\n        this.db = new Mongoose(DB_NAME);\n        this.collection = this.db.collection(CLT_NAME, {max:30, unique:['a']});\n    },\n    doClear() {\n        AsyncStorage.removeItem(DB_NAME);\n    },\n    doShowList() {\n        (async function(){\n            var list =  await AsyncStorage.getItem(DB_NAME);\n            console.log('result:', JSON.parse(list));\n\n        })();\n    },\n    doShowKeys() {\n        (async function(){\n            var list = await AsyncStorage.getAllKeys();\n            console.log('result:', list);\n        })();\n    },\n    async doInsert() {\n        var info = {\n            a : 4,\n            b : 3,\n        };\n        var collection = this.collection;\n        var list = await collection.insert(info).catch(error=\u003econsole.log(error));;\n        console.log(\"list\");\n        console.log(list);\n    },\n    async doFind() {\n        var collection = this.collection;\n        var req = await collection.find();\n        console.log(req);\n    },\n    async doFindOne() {\n        var collection = this.collection;\n        var req = await collection.findOne({b:3,a:1});\n        console.log(req);\n    },\n    async doRemove() {\n        var collection = this.collection;\n        var req = await collection.remove();\n        console.log(req);\n        var req = await collection.find();\n        console.log(req);\n    },\n    async doUpsert() {\n        var collection = this.collection;\n        var info = {\n            a : 4,\n            b : 6,\n        };\n        var list = await collection.upsert(info, {a:4}).catch(error=\u003econsole.log(error));;\n        console.log(\"list\");\n        console.log(list);\n    },\n    render() {\n        return (\n            \u003cView style={styles.container}\u003e\n                \u003cButton onPress={this.doClear}\u003e清除\u003c/Button\u003e\n                \u003cButton onPress={this.doShowList}\u003e列表\u003c/Button\u003e\n                \u003cButton onPress={this.doShowKeys}\u003e键值\u003c/Button\u003e\n                \u003cButton onPress={this.doInsert}\u003eInsert\u003c/Button\u003e\n                \u003cButton onPress={this.doFind}\u003eFind\u003c/Button\u003e\n                \u003cButton onPress={this.doFindOne}\u003efindOne\u003c/Button\u003e\n                \u003cButton onPress={this.doRemove}\u003eRemove\u003c/Button\u003e\n                \u003cButton onPress={this.doUpsert}\u003eUpsert\u003c/Button\u003e\n            \u003c/View\u003e\n        );\n    }\n});\n\n\nvar styles = StyleSheet.create({\n    container: {\n        flex: 1,\n        backgroundColor: 'transparent',\n        justifyContent: 'space-around',\n        paddingVertical: 150,\n    },\n});\n```\n\n### method\n* #### creat dataBase\n```js\nvar db = new Mongoose(dbname);\n```\n    * dbname: the name of database, in AsyncStorage it is a item key\n\n* #### clear memory\n```js\n    db.clear();\n```\n    * react-native-mongoose use memory chache database, when not use it, use it clear memory;\n\n\n* #### creat collection\n```js\nvar collection = this.db.collection(collectionName, capped);\n```\n    * collectionName: the name of collection\n    * capped: {max: Number, unique:String|Array}\n        * max: max rows in collection, if not set, have no limit\n        * unique: set unique primary key, it can be a single String or a array for keys\n\n* #### insert\n```js\nvar doc = collection.insert(docs);\n```\n    * docs: to be insert docs, if set capped.max, when reach capped.max, will be replace oldest one, if set capped.unique, e.g: capped.unique is 'a', then a is unique.\n\n\n* #### upsert\n```js\nvar doc = collection.upsert(docs, query, params);\n```\n    * docs: need insert or update data\n    * query: look Query help\n    * params: {limit:Number, offset:Number, strict:bool};\n        * limit: need upsert number\n        * offset: need upsert start position\n        * strict: set compare strict mode, look Query help\n\n\n* #### update\n```js\nvar doc = collection.upsert(docs, query, params);\n```\n    * docs: need update data\n    * query: look Query help\n    * params: {limit:Number, offset:Number, strict:bool};\n        * limit: need update number\n        * offset: need update start position\n        * strict: set compare strict mode, look Query help\n\n\n* #### remove\n```js\nvar doc = collection.remove(query, params);\n```\n    * query: look Query help\n    * params: {limit:Number, offset:Number, strict:bool};\n        * limit: need remove number\n        * offset: need remove start position\n        * strict: set compare strict mode, look Query help\n\n\n* #### find\n```js\nvar docs = collection.find(query, params);\n```\n    * query: look Query help\n    * params: {limit:Number, offset:Number, strict:bool};\n        * limit: need find number\n        * offset: need find start position\n        * strict: set compare strict mode, look Query help\n\n\n* #### findOne\n```js\nvar doc = collection.findOne(query);\n```\n    * query: look Query help\n    * params: {limit:Number, offset:Number, strict:bool};\n        * limit: 1\n        * offset: need findOne start position\n        * strict: set compare strict mode, look Query help\n\n ### Query help\nQuery can be a object like {a:1, b:2}, or {a:{$eq:1}, b:{$eq:2}}\nalso can be a function lick {a:function(a){return a\u003e1}}\noperand like follows:\n* '$gt':\n```js\n    return val1 \u003e val2;\n```\n* '$lt':\n```js\n    return val1 \u003c val2;\n```\n* '$gte':\n```js\n    return val1 \u003e= val2;\n```\n* '$lte':\n```js\n    return val1 \u003c= val2;\n```\n* '$ne':\n```js\n    return strict ? val1!==val2 : val1!=val2;\n```\n* '$eq':\n```js\n    return strict ? val1===val2 : val1==val2;\n```\n* '$like':\n```js\n    return new RegExp(val2).test(val1);\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fremobile%2Freact-native-mongoose","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fremobile%2Freact-native-mongoose","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fremobile%2Freact-native-mongoose/lists"}