Nodejs使用mongoosastic

为了同步的将数据保存到mongodb以及Elasticsearch中,这里我们使用一个叫做mongoosastic的插件,如果你想使用mongoosastic,建议你阅读一下mongoose的用法

首先我们安装mongoosastic:

npm install mongoosastic -S

首先我们要做准备工作:

  • 启动mongodb
  • 启动eleasticearch
  • 启动kibana(为了观察eleasticearch的数据)

下面的代码连接的数据库是runoob,使用集合是user。本demo保存一个name为mmmm的文档。然后观察数据库和搜索引擎的数据。

数据库连接代码如下:

var mongoose = require('mongoose')

// mongodb 数据库连接地址
const mongdbUrl = 'mongodb://localhost/runoob'

// 连接mongodb数据库
mongoose.connect(mongdbUrl)

// 获取连接对象
var db = mongoose.connection

db.on('error', console.error.bind(console, 'connect error'))

var main = {
  getConnection: (callback) => {
    db.on('open', () => {
      console.log('连接成功')
      callback(db)
    })
  },
  closeConnection: () => {
    db.close((err) => {
      if (err) {
        console.log('数据库关闭异常')
      } else {
        console.log('数据库正常关闭')
      }
    })
  }
}
module.exports = main

具体的实现如下:

var mgc = require('./mongodbConnection')
var mongoose = require('mongoose')
var mongoosastic = require('mongoosastic')

var Schema = mongoose.Schema

var userSchema = new Schema({
  name: Schema.Types.String,
  age: Schema.Types.Mixed,
  description: Schema.Types.String
})
userSchema.plugin(mongoosastic, {
  hosts: [
    'localhost:9200'
  ]})

var User = mongoose.model('user', userSchema)

var u = {'name': 'mmmm', age: 100, description: 'LLL'}
mgc.getConnection((db) => {
  User.create(u, (err, res) => {
    console.log('保存')
    if (err) throw err
    console.log('数据:' + res)
  })
})

此时我们分别观看数据库和搜索引擎的数据。


数据库mongodb
搜索引擎Elasticsearch

可以看到数据已经同时保存到了数据库和搜索引擎。

参考资料
mongoose:http://www.nodeclass.com/api/mongoose.html
mongoosastic:https://www.npmjs.com/package/mongoosastic
Elasticsearch:https://www.elastic.co/products/elasticsearch

你可能感兴趣的:(Nodejs使用mongoosastic)