首页 > 解决方案 > 无法使用批处理将数据写入 leveldb 文件

问题描述

我刚开始使用 node.js 中的 level 模块学习 level.db

var level = require('level')
var db = level('batch.db', { valueEncoding: 'json' })
var batch = [] 
  for (var i = 0; i < 10; i++) {
 batch.push({ key: 'n' + i, value: i*1000 }) 
}
 db.batch(batch, function (err) {
 if (err) console.error(err)
})

但是这段代码给了我以下ERROR

错误 [WriteError]:type必须是 C:\Users\mathe\Desktop\levelDB-and-Crypto\node_modules\level-packager\node_modules\levelup\lib\levelup.js:274:23 的“put”或“del”

有人可以让我知道有什么问题吗?

标签: javascriptnode.jsleveldb

解决方案


这里leveldb 的 GitHub 页面,我们可以看到一个例子:

const ops = [
  { type: 'del', key: 'father' },
  { type: 'put', key: 'name', value: 'Yuri Irsenovich Kim' },
  { type: 'put', key: 'dob', value: '16 February 1941' },
  { type: 'put', key: 'spouse', value: 'Kim Young-sook' },
  { type: 'put', key: 'occupation', value: 'Clown' }
]

db.batch(ops, function (err) {
  if (err) return console.log('Ooops!', err)
  console.log('Great success dear leader!')
})

数组中的每一项都有属性“type”,可以是“del”或“put”。

所以,我认为代码应该是:

var level = require('level')
var db = level('batch.db', { valueEncoding: 'json' })
var batch = [] 
for (var i = 0; i < 10; i++) {
 batch.push({ type : "put", key: 'n' + i, value: i*1000 }) 
}
db.batch(batch, function (err) {
 if (err) console.error(err)
})

推荐阅读