You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
79 lines
2.3 KiB
79 lines
2.3 KiB
// const MongoClient = require('mongodb').MongoClient |
|
const assert = require("assert"); |
|
const fs = require("fs"); |
|
const path = require("path"); |
|
const crypto = require('crypto'); |
|
|
|
// const DATABASE_NAME = 'bookmarksdb' |
|
// const DATABASE_SERVER = '192.168.31.201' |
|
// const DATABASE_PORT = 27017 |
|
// const USER = encodeURIComponent('root'); |
|
// const PASSWORD = encodeURIComponent('root123'); |
|
// const AUTHMECHANISM = 'SCRAM-SHA-1'; |
|
// const DATABASE_URL = `mongodb://${USER}:${PASSWORD}@${DATABASE_SERVER}:${DATABASE_PORT}/?authMechanism=${AUTHMECHANISM}&authSource=${DATABASE_NAME}` |
|
// const DATABASE_URL = `mongodb://${DATABASE_SERVER}:${DATABASE_PORT}/${DATABASE_NAME}` |
|
// const COLLECTION = 'bookmarks' |
|
|
|
// const inertData = (db, callback) => { |
|
// const collection = db.collection('bookmarks') |
|
// let data = [{ |
|
// id: '0', |
|
// title: "根书签" |
|
// }] |
|
// collection.insertMany(data, (error, result) => { |
|
// assert.equal(null, error) |
|
// assert(1, result.result.n) |
|
// assert(1, result.ops.length) |
|
// callback(result) |
|
// }) |
|
// } |
|
|
|
exports.connect = () => { |
|
// const client = new MongoClient(DATABASE_URL) |
|
// client.connect((error) => { |
|
// assert.equal(null, error) |
|
// const db = client.db(DATABASE_NAME) |
|
// console.log('connect ' + DATABASE_URL + ' successfully') |
|
// inertData(db, result => { |
|
// client.close() |
|
// }) |
|
// }) |
|
}; |
|
|
|
exports.save = (bookmarkArray, callback) => { |
|
const bookmarkStr = JSON.stringify(bookmarkArray); |
|
// 计算hash |
|
const hash = crypto |
|
.createHash("sha256") |
|
.update(JSON.stringify(bookmarkArray)) |
|
.digest("base64"); |
|
console.log(hash); |
|
fs.writeFile( |
|
path.join("database", Date.now() + ".json"), |
|
bookmarkStr, |
|
err => { |
|
callback(err); |
|
} |
|
); |
|
}; |
|
|
|
exports.get = callback => { |
|
fs.readdir(path.join("database"), (err, files) => { |
|
if (err) throw err; |
|
let latestFile = 0; |
|
for (let i = 0; i < files.length; i++) { |
|
let filename = files[i]; |
|
const time = filename.substr(0, filename.length - 5); |
|
if (time > latestFile) { |
|
latestFile = time; |
|
} |
|
} |
|
fs.readFile( |
|
path.join("database", latestFile + ".json"), |
|
"utf8", |
|
(error, data) => { |
|
callback(error, JSON.parse(data)); |
|
} |
|
); |
|
}); |
|
};
|
|
|