有人可以教我这个:
尝试在node.js实例中使用levelDb,以存储name
密钥和ID
字符串,我希望能够检查ID
是否已经存在在DB中......
看documentation我不知道自己做错了什么。
我在这里db.js
:
var level = require('level');
var path = require('path');
var dbPath = process.env.DB_PATH || path.join(__dirname, 'mydb');
var db = level(dbPath);
module.exports = db;
我希望能够查询数据库,所以我的基本尝试app.js
在这里:
var db = require('./db', {
valueEncoding: 'json'
})
db.put('name', 'ID001')
db.put('name', 'ID002')
db.put('name', 'ID003')
db.put('name', 'ID004')
db.put('name', 'ID005')
db.put('name', 'ID006')
db.put('name', 'ID007')
db.createReadStream()
.on('data', function (entry) {
console.log(entry.value);
})
我以为我只是在数据库中获取最后一个值,但在重复运行之后我得到了这样的输出:
spences10:~/workspace/level-db $ node app.js
ID006
spences10:~/workspace/level-db $ node app.js
ID007
spences10:~/workspace/level-db $ node app.js
ID007
spences10:~/workspace/level-db $ node app.js
ID007
spences10:~/workspace/level-db $ node app.js
ID005
spences10:~/workspace/level-db $ node app.js
ID007
spences10:~/workspace/level-db $ node app.js
ID007
spences10:~/workspace/level-db $ node app.js
ID006
spences10:~/workspace/level-db $ node app.js
ID005
spences10:~/workspace/level-db $ node app.js
ID003
spences10:~/workspace/level-db $ node app.js
ID007
我只是希望能够遍历或查询数据库以查看是否需要将值放入其中。
我也尝试使用.get
使用相同类型的结果
var db = require('./db', {
valueEncoding: 'json'
})
db.put('name', 'ID001')
db.put('name', 'ID002')
db.put('name', 'ID003')
db.put('name', 'ID004')
db.put('name', 'ID005')
db.put('name', 'ID006')
db.put('name', 'ID007')
db.get('name', function(err, value) {
if (err) {
return err;
}
console.log('value:', value);
});
...输出
spences10:~/workspace/level-db $ node app.js
value: ID007
spences10:~/workspace/level-db $ node app.js
value: ID004
spences10:~/workspace/level-db $ node app.js
value: ID005
spences10:~/workspace/level-db $ node app.js
value: ID007
spences10:~/workspace/level-db $ node app.js
value: ID003
spences10:~/workspace/level-db $ node app.js
value: ID007
答案 0 :(得分:1)
delete(CloseCodes[event.code])
函数是异步的,代码按顺序多次执行Object.defineProperty(...)
操作。然后调用put
将为您提供实际写入的最后一个值。这就是每次读取代码时都会得到不同输出的原因。
在docs的示例中,您可以看到在put操作的回调中读取数据,以确保实际写入数据。
put