vue3nedb

vue中使用nedb

# 1 万条数据查询耗时 630ms,不适合数据量大的操作

<template>
  <div>这是数据库:{{ data.name }}</div>
</template>

<script setup>
import axios from 'axios'
import nedb from 'newdb'

let data = reactive({
  name: ''
})
// 创建多个数据库
let db = {}
db.users = new nedb({
  filename: '/data/users.db',
  autoload: true
})

db.robots = new nedb({
  filename: '/data/robots.db',
  autoload: true
})

// 设置id是唯一索引
db.robots.ensureIndex({ fieldName: 'id', unique: true }, function (err) {
  // If there was an error, err is not null
})

onMounted(() => {
  // console.log('---:', axios)
  axios('http://jsonplaceholder.typicode.com/photos').then(res => {
    console.log('---:', res.data)
    let resultList = res.data
    console.timeEnd('resultList:')
    resultList.map((item, index) => {
      item.id = 5001 + index
    })
    console.timeEnd('resultList:')
    console.log('resultList----:', resultList)

    console.time('插入5000条数据')
    db.robots.insert(resultList, function (err, ret) {
      console.log('err:', err)
      if (ret?.length) {
        console.log('插入成功', ret)
        console.timeEnd('插入5000条数据')
      }
    })
  })
  console.log('ddd')
  // 创建单个数据库
  // const db = new nedb({
  //   filename: '/data/save.db',
  //   autoload: true,
  // })

  /**
   * 查询所有 - {}
   */
  // db.users.find({}, function (err, all) {
  //   console.log(all,'all')
  // })

  // db.robots.update({ a: 55555 }, { $set: { a: '5a', b: 66666, id: 19999 } }, { multi: true }, function (err, numReplaced) {
  //   // console.log('update err:', err)
  //   console.log('update numReplaced:', numReplaced)
  // })

  // { b: 9, id: 1 }
  console.time('查询5000条数据')
  db.robots.find({}, function (err, all) {
    console.log(all, 'all')
    console.timeEnd('查询5000条数据')
  })

  // 查询id = 3 的一条数据
  console.time('id = 3 的')
  db.robots.findOne({ id: 3 }, (err, ret) => {
    console.log(ret, 'finde')
    console.timeEnd('id = 3 的')
    data.name = ret?.b
  })

  // 统计b=9的数量
  /* db.robots.count({ b: 9 }, function (err, count) {
    console.log('count:', count)
  }) */

  /**
   * 查询,比较复杂,还有很多条件
   */
  // 查询 a = 42 的第一条数据
  // db.find({a:42}, function (err, docs) {
  //    console.log(docs,'删除之前')
  // })

  /**
   * 删除操作相关(全)
   */
  // 删除a = 42 的一条记录
  // db.remove({ a: 111111}, {
  //   // multi: true  //开启为多条
  // }, function (err, numRemoved) {
  //   // numRemoved = 1 代表删除成功
  //   console.log(numRemoved)
  // })
  // 删除所有记录
  // db.remove({}, { multi: true }, function (err, numRemoved) {

  // })
})
</script>
上次更新: