redhare-demo/helpers/db-repo/review-repo.js

72 lines
1.6 KiB
JavaScript

import { db } from '..'
import Review from '@/models/Review'
const getAll = async ({ page, page_size }, filter) => {
await db.connect()
const reviews = await Review.find(filter)
.populate('product', 'images')
.populate('user', 'name')
.skip((page - 1) * page_size)
.limit(page_size)
.sort({
createdAt: 'desc',
})
const reviewsLength = await Review.countDocuments(filter)
await db.disconnect()
return {
reviews,
reviewsLength,
pagination: {
currentPage: page,
nextPage: page + 1,
previousPage: page - 1,
hasNextPage: page_size * page < reviewsLength,
hasPreviousPage: page > 1,
lastPage: Math.ceil(reviewsLength / page_size),
},
}
}
const getById = async id => {
await db.connect()
const result = await Review.findById(id).populate('product', 'images').populate('user', 'name')
if (!result) throw '数据不存在'
await db.disconnect()
return result
}
const create = async (id, params) => {
await db.connect()
const newReview = new Review({
user: id,
...params,
})
await newReview.save()
await db.disconnect()
}
const _delete = async id => {
await db.connect()
const result = await Review.findById(id)
if (!result) throw '数据不存在'
await Review.findByIdAndDelete(id)
await db.disconnect()
}
const update = async (id, params) => {
await db.connect()
const result = await Review.findById(id)
if (!result) throw '数据不存在'
await Review.findByIdAndUpdate({ _id: id }, { ...params })
await db.disconnect()
return result
}
export const reviewRepo = {
getAll,
getById,
create,
update,
delete: _delete,
}