Mongoose是一个在Node.js中使用MongoDB的对象模型工具,它可以让我们更方便地进行MongoDB的增删改查等操作。
首先,我们需要通过npm安装Mongoose:
npm install mongoose
接下来,我们需要连接到MongoDB数据库:
javascript
const mongoose = require('mongoose');
mongoose.connect('mongodb://localhost/test', {useNewUrlParser: true});
上面的代码中,我们使用mongoose.connect()方法连接到本地的test数据库。需要注意的是,useNewUrlParser参数用来避免一些错误。
接下来,我们可以定义一个Schema:
javascript
const Schema = mongoose.Schema;
const animalSchema = new Schema({
name: String,
type: String,
age: Number
});
上面的代码中,我们定义了一个animalSchema,包含了name、type和age三个字段。Schema可以控制MongoDB中数据的结构,相当于定义了一个数据模板。
接着,我们可以定义一个Model:
javascript
const Animal = mongoose.model('Animal', animalSchema);
上面的代码中,我们使用mongoose.model()方法创建了一个Animal模型,它对应了animalSchema这个Schema。
有了Model之后,我们就可以对MongoDB进行增删改查等操作了。
例如,我们可以创建一个新的动物:
javascript
const dog = new Animal({ name: 'Snoopy', type: 'dog', age: 3 });
dog.save(function (err) {
if (err) return handleError(err);
console.log('Saved!');
});
上面的代码中,我们创建了一个名叫Snoopy、类型为dog、年龄为3的新动物,并将它保存到MongoDB中。
如果我们想查询MongoDB中的动物,可以使用以下代码:
javascript
Animal.find({ type: 'dog' }, function (err, animals) {
if (err) return handleError(err);
console.log(animals);
});
上面的代码中,我们查询了所有类型为dog的动物,并将它们打印出来。
Mongoose的Schema可以让我们在设计MongoDB的数据结构时更加方便。
首先,我们需要定义一个Schema:
javascript
const Schema = mongoose.Schema;
const userSchema = new Schema({
username: { type: String, required: true, unique: true },
password: { type: String, required: true },
email: { type: String, required: true, unique: true },
age: { type: Number, min: 18, max: 99 },
gender: { type: String, enum: ['male', 'female'] },
createTime: { type: Date, default: Date.now }
});
上面的代码中,我们定义了一个userSchema,包含了username、password、email、age、gender和createTime六个字段。
其中,username、password和email都是必填的,并且在整个数据库中必须是唯一的。age字段的取值必须在18到99之间,gender字段的取值必须是male或female,createTime字段的默认值为当前的时间。
接着,我们可以为Schema定义一些方法:
javascript
userSchema.methods.sayHello = function() {
console.log(`Hello, my name is ${this.username}!`);
}
上面的代码中,我们为userSchema定义了一个sayHello方法,可以在实例上调用。
最后,我们可以将Schema转换成Model:
javascript
const User = mongoose.model('User', userSchema);
上面的代码中,我们将userSchema转换成了一个名为User的Model,可以用来操作MongoDB中的数据。