mongoose getting started 翻译

本文介绍了如何使用Node.js库Mongoose与MongoDB交互。包括安装配置、创建Schema、定义Model、实例化对象、实现自定义方法、保存及查询数据等步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

首先确保 已经正确安装 nodejs和mongoDb 

然后安装mongoose 命令行输入npm install mongoose

$ npm install mongoose


假如我们喜欢的毛茸茸的猫咪并且希望把每一个我们遇见过的猫咪都记录在MongoDb里面.

第一件要做的事情就是把mongoose包含(include)到我们的项目中并且在我们本地运行的mongodb上打开一个和名为test的数据库的连接

// getting-started.js
var mongoose = require('mongoose');
mongoose.connect('mongodb://localhost/test');

现在我们和本地主机的test数据库有了一个连接.为了获取我们是连接正确还是连接失败.我们需要监听来自这个连接的通知

var db = mongoose.connection;
db.on('error', console.error.bind(console, 'connection error:'));
db.once('open', function callback () {
  // yay!
});

一旦数据库被打开,那么我们的回调函数就会被调用.为了简洁起见,我们要确保下面的代码都在这个回调函数中

在mongoose里面,所有东西都继承自一个叫做Schema的东东.我们获取一个Schema的引用让他定义我们的猫咪

var kittySchema = mongoose.Schema({    name: String})
  到现在为止,一切看起来都还不错.我们获取了一个Schema并且他只有一个属性 name,类型呢.是String.

下一步是编译我们的Schema,让他成为一个Model

var Kitten = mongoose.model('Kitten', kittySchema)


Model 模型? 就是我们构造document的一个类.因此,每个document都会是一个拥有我们在Schema中声明的属性和行为的猫咪.

来让我们创建一个document表示这个我们刚才在外面人行道遇见的小家伙.

var silence = new Kitten({ name: 'Silence' })
console.log(silence.name) // 'Silence'


猫咪会喵喵叫,所以我们接下来看看怎么给我们的document增加一个"speak"的函数

// NOTE: methods must be added to the schema before compiling it with mongoose.model()
kittySchema.methods.speak = function () {
  var greeting = this.name
    ? "Meow name is " + this.name
    : "I don't have a name"
  console.log(greeting);
}

var Kitten = mongoose.model('Kitten', kittySchema)

每个schema里面关键字为methods定义的函数将会被编译进Model并且暴露给每个document 实例,比如:

var fluffy = new Kitten({ name: 'fluffy' });
fluffy.speak() // "Meow name is fluffy"

我们现在已经有了喵喵叫的猫咪,但是我们仍然没有在MongoDB里面存入任何的东西.每一个document多可以通过保存方法(saving methods)来存入数据库.

save函数的参数是一个回调函数, 回调函数的第一个参数是可能发生的错误值(从代码上看起来,第二个函数似乎指向我们当前的这个对象)

fluffy.save(function (err, fluffy) {
  if (err) // TODO handle the error
  fluffy.speak();
});
随着时间流逝,我们想把所有我们遇见过的猫咪都展示出来怎么办呢..我们可以通过猫咪的Model来访问全部猫咪的document.

Kitten.find(function (err, kittens) {
  if (err) // TODO handle err
  console.log(kittens)
})

于是我们把所有的猫咪都输出到控制台窗口.但是如果我们想根据猫咪的名字来筛选呢? Mongoose提供了大量的检索(quering)语义


Kitten.find({ name: /^Fluff/ }, callback)
这个语句检索了名字为'Fluff'的猫咪并且把检索的结果返回到回调函数里面


恭喜:

到这里新手教程就结束了.我们使用mongoose创建了一个Schema,并且增加了一个自定义的document,保存和检索了猫咪们的信息.现在可以转向guide和API docs来获取更多信息


全部代码整理:

var mongoose = require('mongoose');

var mongodb = mongoose.connect("mongodb://localhost:27017");


var db = mongodb.connection;

db.on('error', console.error.bind(console, 'connection error:'));
db.once('open', function callback () {
  // yay!
  
	console.log('open success!');
  
	//创建Schema
	var kittySchema = new mongoose.Schema ( { 
		name : String 
		
	});

	//添加方法	
	kittySchema.methods.speak = function() {
	
		var greeting = this.name ?
			"Meow name is " + this.name
			: "I don't have a name"
		console.log(greeting);
	}
	
	//创建Model
	var Kitten = mongoose.model('Kitten', kittySchema );

	//创建实例
	var silence = new Kitten( { name : 'Silence'} );		
	
	//保存实例
	silence.save( function( err, silence ) { 
		if( err )
			console.log(err);
		
		silence.speak();
	
	});


	//查询
	Kitten.find( {name:'Silence'}, function(){
			
	});	
	

	console.log(silence.name);
  
});



总结步骤:

1.创建一个继承自mongoose.Schema的数据结构, 定义好字段的名字和类型

2.用这个Schema去创建一个Model

3.创建实例,保存和查询都通过这个Schema创建的Model来完成




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值