6 changed files with 129 additions and 51 deletions
@ -1 +1,4 @@ |
|||||||
node_modules/ |
node_modules/ |
||||||
|
database/ |
||||||
|
yarn.lock |
||||||
|
package-lock.json |
@ -1,40 +1,68 @@ |
|||||||
const MongoClient = require('mongodb').MongoClient |
// const MongoClient = require('mongodb').MongoClient
|
||||||
const assert = require('assert') |
const assert = require('assert') |
||||||
const fs = require('fs') |
const fs = require('fs') |
||||||
|
const path = require('path') |
||||||
|
|
||||||
const DATABASE_NAME = 'bookmarksdb' |
// const DATABASE_NAME = 'bookmarksdb'
|
||||||
const DATABASE_SERVER = '192.168.31.201' |
// const DATABASE_SERVER = '192.168.31.201'
|
||||||
const DATABASE_PORT = 27017 |
// const DATABASE_PORT = 27017
|
||||||
const USER = encodeURIComponent('root'); |
// const USER = encodeURIComponent('root');
|
||||||
const PASSWORD = encodeURIComponent('root123'); |
// const PASSWORD = encodeURIComponent('root123');
|
||||||
const AUTHMECHANISM = 'SCRAM-SHA-1'; |
// const AUTHMECHANISM = 'SCRAM-SHA-1';
|
||||||
// const DATABASE_URL = `mongodb://${USER}:${PASSWORD}@${DATABASE_SERVER}:${DATABASE_PORT}/?authMechanism=${AUTHMECHANISM}&authSource=${DATABASE_NAME}`
|
// 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 DATABASE_URL = `mongodb://${DATABASE_SERVER}:${DATABASE_PORT}/${DATABASE_NAME}`
|
||||||
const COLLECTION = 'bookmarks' |
// const COLLECTION = 'bookmarks'
|
||||||
|
|
||||||
const inertData = (db, callback) => { |
// const inertData = (db, callback) => {
|
||||||
const collection = db.collection('bookmarks') |
// const collection = db.collection('bookmarks')
|
||||||
let data = [{ |
// let data = [{
|
||||||
id: '0', |
// id: '0',
|
||||||
title: "根书签" |
// title: "根书签"
|
||||||
}] |
// }]
|
||||||
collection.insertMany(data, (error, result) => { |
// collection.insertMany(data, (error, result) => {
|
||||||
assert.equal(null, error) |
// assert.equal(null, error)
|
||||||
assert(1, result.result.n) |
// assert(1, result.result.n)
|
||||||
assert(1, result.ops.length) |
// assert(1, result.ops.length)
|
||||||
callback(result) |
// 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.connect = ( ) => { |
exports.save = (bookmarkArray, callback) => { |
||||||
const client = new MongoClient(DATABASE_URL) |
console.log('save data') |
||||||
|
const bookmarkStr = JSON.stringify(bookmarkArray) |
||||||
|
fs.writeFile(path.join('database', Date.now() + '.json'), bookmarkStr, err => { |
||||||
|
callback(err) |
||||||
|
}); |
||||||
|
} |
||||||
|
|
||||||
client.connect((error) => { |
exports.get = callback => { |
||||||
assert.equal(null, error) |
console.log('get latest bookmarks') |
||||||
const db = client.db(DATABASE_NAME) |
fs.readdir(path.join('database'), (err, files ) => { |
||||||
console.log('connect ' + DATABASE_URL + ' successfully') |
if (err) throw err |
||||||
inertData(db, result => { |
console.log(files) |
||||||
client.close() |
let latestFile = 0 |
||||||
|
for (let i = 0; i < files.length; i++) { |
||||||
|
let filename = files[i] |
||||||
|
const time = filename.substr(0, filename.length - 5) |
||||||
|
console.log(time) |
||||||
|
if (time > latestFile) { |
||||||
|
latestFile = time |
||||||
|
} |
||||||
|
} |
||||||
|
fs.readFile(path.join('database', latestFile + '.json'), (error, data) => { |
||||||
|
callback(error, JSON.parse(data.toString())) |
||||||
}) |
}) |
||||||
}) |
}) |
||||||
} |
} |
@ -1,28 +1,47 @@ |
|||||||
const express = require('express'); |
const express = require('express'); |
||||||
|
const cors = require('cors'); |
||||||
const app = express(); |
const app = express(); |
||||||
|
const path = require('path'); |
||||||
|
const fs = require('fs'); |
||||||
const port = 3000; |
const port = 3000; |
||||||
|
|
||||||
// const db = require('./db')
|
const SUCCESS_CODE = 0 |
||||||
// db.connect()
|
|
||||||
|
|
||||||
|
|
||||||
|
const db = require('./db') |
||||||
|
db.connect() |
||||||
|
|
||||||
|
app.use(cors()) |
||||||
app.use(express.json()) // for parsing application/json
|
app.use(express.json()) // for parsing application/json
|
||||||
app.use(express.urlencoded({ extended: true })) // for parsing application/x-www-form-urlencoded
|
app.use(express.urlencoded({ extended: true })) // for parsing application/x-www-form-urlencoded
|
||||||
|
|
||||||
app.get('/', (req, res) => { |
app.get('/', (req, res) => { |
||||||
res.send('Hello World!') |
res.json({ |
||||||
|
code: SUCCESS_CODE, |
||||||
|
data: { |
||||||
|
version: '0.1' |
||||||
|
} |
||||||
|
}) |
||||||
}) |
}) |
||||||
|
|
||||||
app.get('/bookmarks', function (req, res) { |
app.get('/bookmarks', function (req, res) { |
||||||
console.log('download bookmarks') |
db.get((error, bookmarkArray) => { |
||||||
|
if (error) throw error |
||||||
res.json({ |
res.json({ |
||||||
id: '0', |
code: SUCCESS_CODE, |
||||||
title: '标题' |
data: bookmarkArray |
||||||
}) |
}) |
||||||
|
}) |
||||||
}) |
}) |
||||||
|
|
||||||
app.post('/bookmarks', function (req, res) { |
app.post('/bookmarks', function (req, res) { |
||||||
console.log('upload bookmarks') |
const bookmarkArray = req.body |
||||||
console.log(req.body) |
db.save(bookmarkArray, err => { |
||||||
|
if (err) throw err |
||||||
|
}) |
||||||
|
res.json({ |
||||||
|
code: SUCCESS_CODE |
||||||
|
}) |
||||||
}) |
}) |
||||||
|
|
||||||
app.listen(port, () => { console.log("server is running at port " + port) }) |
app.listen(port, () => { console.log("server is running at port " + port) }) |
||||||
|
Loading…
Reference in new issue