1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586 |
- import * as config from '../config.local'
- import { create } from 'domain'
- export async function safeCreateCollection(db, name) {
- return db.createCollection(name)
- }
- export async function timer(time: number) {
- return new Promise(resolve => {
- setTimeout(() => {
- resolve()
- }, time)
- })
- }
- export async function safeCollection(db, name) {
- const collection = db.collection(name)
- let num = -1
- // 检查collection是否存在
- try {
- const res = await collection.where({}).get()
- // collection存在 且有数据 则删除当前collection中所有doc
- if (res.data.length) {
- await collection
- .where({
- _id: /.*/
- })
- .remove()
- }
- } catch (e) {
- if (e.code === 'DATABASE_COLLECTION_NOT_EXIST') {
- // 不存在
- await db.createCollection(name)
- }
- }
- return {
- async create(data) {
- // await db.createCollection(name)
- const datas = Array.isArray(data) ? data : [data]
- num = datas.length
- let result
- try {
- result = await collection.add(datas)
- } catch (e) {
- // throw e
- }
- // const getRes = await collection.doc(result.id).get()
- if (result.ids.length !== num) {
- throw Error('出现插入数据失败情况了!!')
- }
- return true
- },
- async remove() {
- // 加重试机制
- let flag = false
- let retryTimes = 0
- let result = null
- while (flag !== true && retryTimes++ < 4) {
- result = await collection
- .where({
- _id: /.*/
- })
- .remove()
- flag = result.deleted >= 0
- if (!flag) {
- await timer(1200) // 等1.2s
- }
- }
- return flag
- }
- }
- }
- // module.exports = {
- // safeCreateCollection,
- // safeCollection
- // }
|