无法使用批处理将数据写入 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 必须是 'put' 或 'del' 在 C:\Users\mathe\Desktop\levelDB-and-Crypto\node_modules\level-packager\node_modules\levelup\lib\levelup.js:274:23

有人可以告诉我有什么问题吗?

解决方法

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

const ops = [
  { type: 'del',key: 'father' },{ type: 'put',key: 'name',value: 'Yuri Irsenovich Kim' },key: 'dob',value: '16 February 1941' },key: 'spouse',value: 'Kim Young-sook' },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)
})

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...