自分で作ったり提供したりするものは、まず自分自身で使ってみろろということです。自分じゃ使わないものなら人はいくらでも無責任にも無思考にもなれる。そういう投げやりな「サービス」やら「プロダクツ」なんて、だれだってイヤだ。自分が作り手と同時に利用者の立場になれば、ちゃんと使えるレベルのものを提供しようとします。

ラベル mongoose の投稿を表示しています。 すべての投稿を表示
ラベル mongoose の投稿を表示しています。 すべての投稿を表示

2013年10月20日日曜日

mongoose-virtualプロパティ

mongooseはバーチャルプロパティ(virtual property)をサポートしています、このトピックで紹介します。

var mongoose = require('mongoose');
mongoose.connect('mongodb://localhost/test01');

var PersonSchema = new mongoose.Schema({
  name:{
      first:String,
      last:String
  }
});
PersonSchema.virtual('name.full').get(function(){
    return this.name.first + ' ' + this.name.last;
});
PersonSchema.virtual('name.full').set(function(name){
    var split = name.split(' ');
    this.name.first = split[0];
    this.name.last = split[1];
});

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

    var PersonModel = mongoose.model('Person',PersonSchema);

    var person1 = new PersonModel({
      name:{first:'koma',last:'endia'}
    });
    console.log("person1=" + person1.name.first + " " + person1.name.last);
    console.log("person1=" + person1.name.full);

    var person2 = new PersonModel({});
    person2.name.full = "koma endia";
    console.log("person2=" + person2.name.first + " " + person2.name.last);
    console.log("person2=" + person2.name.full);
});

mongooseでMongoDBに接続してみる

前回と前々回はmongodbとmongoskinを使ってMongoDBに接続処理を紹介しました、今回はmongooseの使い方を紹介します。

Mongoose
http://mongoosejs.com/

まず、インストールします
npm install mongoose

MongoDBは何もせずに、直接にアクセスコードを書きます
nano mongoose.js
...
var mongoose = require('mongoose');
mongoose.connect('mongodb://localhost/test01');

var kittySchema = mongoose.Schema({
    name: String,
    age: Number
    });
kittySchema.methods.speak = function () {
  var greeting = this.name
      ? "Meow name is " + this.name : "I don't have a name"
  console.log(greeting);
}
kittySchema.statics.findAge10 = function(cb) {
  this.find({age:10}, cb);
}

var db = mongoose.connection;
db.on('error', console.error.bind(console, 'connection error:'));
db.once('open', function callback () {
    var Kitten = mongoose.model('Kitten', kittySchema);
    var silence = new Kitten({ name: 'Silence', age: 10 });
    console.log(silence.name);
    silence.speak();

    silence.save(function(error, doc){
        if (error) throw error;

        doc.speak();
    });

    Kitten.find({age:10}, function(error, kittens){
        if (error) throw error;
        //console.log(kittens.length);
        for(var i = 0; i < kittens.length; i++) {
            console.log("name=" + kittens[i].name + ", age=" + kittens[i].age);
        }
    });
    Kitten.findAge10(function(error, kittens){
        if (error) throw error;
        for(var i = 0; i < kittens.length; i++) {
            console.log("[findAge10]" + "_id=" + kittens[i]._id + ", name=" + kittens[i].name + ", age=" + kittens[i].age);
        }
    });
});
...

ホームページ