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.
66 lines
1.6 KiB
66 lines
1.6 KiB
const MongoClient = require("mongodb").MongoClient; |
|
const assert = require("assert"); |
|
const fs = require("fs"); |
|
const path = require("path"); |
|
const crypto = require("crypto"); |
|
|
|
const config = require("../config"); |
|
|
|
const connect = () => { |
|
return new Promise((resolve, reject) => { |
|
const url = config.getMongoUrl(); |
|
MongoClient.connect(url, { useNewUrlParser: true }, (error, client) => { |
|
if (error) { |
|
reject(error); |
|
} else { |
|
resolve(client); |
|
} |
|
}); |
|
}); |
|
}; |
|
|
|
exports.appendNewRecord = async (data) => { |
|
const client = await connect(); |
|
const db = client.db(config.getMongoDB()); |
|
const collection = db.collection("bookmarks"); |
|
|
|
return new Promise((resolve, reject) => { |
|
collection.insertOne( |
|
{ |
|
insertTime: Date.now(), |
|
bookmarks: data, |
|
}, |
|
function (err, result) { |
|
assert.equal(err, null); |
|
if (err) { |
|
reject(err); |
|
} else { |
|
resolve(result); |
|
} |
|
} |
|
); |
|
}); |
|
}; |
|
|
|
exports.getLatestRecord = async () => { |
|
const client = await connect(); |
|
const db = client.db(config.getMongoDB()); |
|
const collection = db.collection("bookmarks"); |
|
return new Promise((resolve, reject) => { |
|
resolve([]); |
|
collection.aggregate({ |
|
$group: { _id: '$insertTime' } |
|
}, {}, function(error, cursor) { |
|
console.log('get latest') |
|
assert.equal(err, null); |
|
if (error) { |
|
reject(error) |
|
} else { |
|
cursor.toArray(function(err, documents) { |
|
console.log(documents) |
|
callback(documents); |
|
}); |
|
} |
|
}); |
|
}); |
|
};
|
|
|