步骤:
func viewAll(db *badger.DB) {
txn := db.NewTransaction(false)
defer txn.Discard()
iterOpts := badger.IteratorOptions{false, 0, false, true}
itr := txn.NewIterator(iterOpts)
defer itr.Close()
b := state.NewBucket(state.BucketRecords)
multiBuffer := capn.NewSingleSegmentMultiBuffer()
for itr.Seek(b.NewKey(nil).Bytes()); itr.Valid(); itr.Next() {
value, err := itr.Item().Value()
if err != nil {
log.Fatalln(err)
}
read, err := capn.ReadFromMemoryZeroCopyNoAlloc(value, multiBuffer)
if err != nil {
log.Fatalln(err) // EOF error
} else if read != int64(len(value)) {
panic(fmt.Sprintf("wrong read: %d != %d", read, len(value)))
}
vv := proto.ReadRootRecord(multiBuffer.Segments[0])
out, err := vv.MarshalCapLit()
if err != nil {
log.Fatalln(err)
}
err = ioutil.WriteFile("cmd/db/content.out", out, 0777|os.ModeAppend)
if err != nil {
log.Fatalln("toFile", err)
}
}
}
结果:
EOF
结果 content.out 仅包含第一个(可能是第一个)数据块。我究竟做错了什么?谢谢!
没有详细信息。