Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 | 7x 7x 7x 7x 7x | import ProductsCommentsModel from "../../models/ProductsComments.js";
import toObjectId from "../../utilities/toObjectId.js";
export default async function getProductComments(productId, options) {
try {
const { sliceNumber, sliceSize } = options;
const startSlice = sliceNumber * sliceSize;
const results = await ProductsCommentsModel.aggregate([
{ $match: { productId: toObjectId(productId) } },
{ $unwind: '$comments' },
{ $replaceRoot: { newRoot: '$comments' } },
{ $skip: startSlice },
{ $limit: sliceSize + 1 },
{
$lookup: {
from: "users",
as: "commenterData",
localField: "commenterId",
foreignField: "_id",
pipeline: [{ $project: { userName: 1, avatar: 1, _id: 0 } }]
}
},
{ $set: { commenterData: { $first: "$commenterData" } } },
{ $project: { updatedAt: 0 } }
])
return {
thereIsMore: !!results[sliceSize],
comments: results.slice(0, sliceSize)
}
} catch (error) {
console.log(error)
return null;
}
}
|