Contents
  1. 1. Preview
    1. 1.1. Wrting..
    2. 1.2. Example
    3. 1.3. NoSQL
    4. 1.4. mongoose.js? mongodb.js?
  2. 2. Quick Start
    1. 2.1. intialize
    2. 2.2. common method

Preview

(张兄让我写一点收获,没办法,就写一点吧

Wrting..

暑假前的iOS俱乐部举行了一次夏令营,收获还是有的,认识了很多本校的学弟学妹,不过认识了几位有想法,有自己作品的朋友,在一起交流了很久,感觉大家虽然目的不同,但是走的路,挖的坑都是惊人的相似。但是大多数人都是来『玩』的,包括老师。期间一直在被很多小白叫大神,说实话我心里是极不舒服的。因为我本身就是个小白,是来系统、基础的学习一些平时途径学不到的东西的,本来是来学习交流的,结果变成来装X和开着热点自学的了。这些老师互相吹逼,我问了所谓技术大牛的老师一个reactnative的问题,他居然说完全不了解,好不容易上了一节关于技术的课,却又只涉及纯理论和大量的假设和推理。。宿舍WiFi超级差,又不稳定,最后老师干脆就不管了,66666

Example

imxana/db_test

This is mongodb + nodejs, a universal backend, just tested for some showing demo..(火车上写的一点东西。。

NoSQL

MongoDB作为一个nosql型数据库,在数据模型使用方面,必须摆脱sql那种链式储存的思维。使用起来更加的自由,特别是JSON与JavaScript对象类型的亲和度非常高,使用时会让你更加的得心应手,而不是需要死记sql语句。一个储存对象就是JSONtree一个分支,可以无限延伸,因此可以存储相当复杂的树数据。

1
2
3
4
5
6
7
8
9
{
"_id" : ObjectId("578319aab115df5938efcdf9"),
"name" : "Ruri",
"userid" : "Yvo1D5X9p4c58GAJ",
"comments" : {
"a": {}
}
"__v" : 0
}

mongoose.js? mongodb.js?

Mongoose作为mongodb-node的一个封装API库,相比于mongo.js来说,它使用了Scheme来作为mongodb的collection的「骨架」,对于骨架具体化的model进行操作。而mongodb.js还是一样使用语句进行操作,这样可能会导致更多的代码,更多的错误。

Quick Start

先假设情景,我需要一个用户模型,用于注册,登陆,储存用户ID(userid)和名字(name)

intialize

数据库初始化代码 db_init.js

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
var mongoose = require('mongoose');
function mongodb() {
var userSchema = mongoose.Schema({
name: String,
userid: String
})
mongoose.model('user', userSchema);
mongoose.connect('mongodb://localhost/db_test');
var db = mongoose.connection
db.on('error', console.error.bind(console, 'connection error:'));
db.once('open', function (callback) {
console.log('MongoDB once opened..');
});
}
module.exports = mongodb;

这段代码做了啥?首先引入mongoose模块,连接本地名为db_test的mongodb数据库(没有的话会自动创建),然后监听错误和开启事件,之后新建了一个user模型userSchema,最后把这个模型注册给名称为’user’的collection。

common method

其他方法 db.js

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
var mongoose = require('mongoose');
var User = mongoose.model('user');
// 1.add-work
var user = new User();
user.name = 'Ruri';
user.id = RandomID();
user.save(function (err) {
if (err) throw err;
console.log('User saved.');
})
// 2.search doc
User.find({'name': 'Ayase'}, function (err, users) {
for (var i = 0; i < users.length; i++) {
console.log('ID:' + users[i].userid);
console.log(users[i].name);
};
});
// 3.del doc
// '' is the ID
Task.findById('56037be2b3293deaa4a98477', function (err, user) {
user.remove();
});

user注册完毕后,取出已注册的user模型(未注册会报错),然后实例化user,调用模型的save方法,就能直接储存。也能直接传入参数save,等价于

1
2
3
4
5
new User({name:'Ruri', id: RandomID()})
.save(function (err) {
if (err) throw err;
console.log('User saved.');
})

删除方法通常配合查询方法,这里只是简单涉及,具体查阅相关资料。
修改方法也配合查询方法,直接修改对象属性然后调用save即可,相当于mongodb语法里的$set(如果没记错的话)

Contents
  1. 1. Preview
    1. 1.1. Wrting..
    2. 1.2. Example
    3. 1.3. NoSQL
    4. 1.4. mongoose.js? mongodb.js?
  2. 2. Quick Start
    1. 2.1. intialize
    2. 2.2. common method