如何使用nodejs获取产品的所有评论
How to get all reviews of a product using nodejs
我正在创建一个电子商务应用程序,现在我想使用 nodejs 获取产品的所有评论,数据库是 mongoDB(使用 mongoose)。这是我的模式:
用户架构:
const userSchema = new Schema(
{
name: { type: String, required: true },
email: { type: String, required: true, unique: true },
password: { type: String, required: true },
isAdmin: { type: Boolean, required: true, default: false },
},
{
timestamps: true,
}
);
产品架构:
const productSchema = new Schema({
user: {
type: Schema.Types.ObjectId,
required: true,
ref: "users",
},
name: { type: String, required: true },
image: { type: String, required: true },
brand: { type: String, required: true },
category: { type: String, required: true },
description: { type: String, required: true },
reviews: [
{
name: { type: String, required: true },
rating: { type: Number, required: true },
comment: { type: String, required: true },
user: {
type: Schema.Types.ObjectId,
required: true,
ref: "users",
},
},
{
timestamps: true,
},
],
rating: { type: Number, required: true, default: 0 },
reviewNumber: { type: Number, required: true, default: 0 },
price: { type: Number, required: true, default: 0 },
countInStock: { type: Number, required: true, default: 0 },
});
我想获取产品的所有评论。这是我的控制器
//* desc Get all reviews
//* route GET /product/:id/review
//* access Public
const getAllReviews = async (req, res) => {
try {
const product = await Product.findById(req.params.id);
const reviews = product.reviews.find({});
return res.status(200).json({
success: true,
reviews,
});
} catch (error) {
console.log(error);
return res.status(500).json({
success: false,
message: "Internal server error",
});
}
};
但是当我使用 Postman 进行测试时。结果报错500,怎么才能得到所有review?
错误:
TypeError: #<Object> is not a function
at Proxy.find (<anonymous>)
at getAllReviews (D:\Workspace\Projects\e-commerce\server\src\controllers\product.controller.js:210:37)
at processTicksAndRejections (internal/process/task_queues.js:95:5)
如果您想发送产品的所有评论,您不需要添加此行
const reviews = product.reviews.find({});
您只需输入
const reviews=product.reviews;
我正在创建一个电子商务应用程序,现在我想使用 nodejs 获取产品的所有评论,数据库是 mongoDB(使用 mongoose)。这是我的模式:
用户架构:
const userSchema = new Schema(
{
name: { type: String, required: true },
email: { type: String, required: true, unique: true },
password: { type: String, required: true },
isAdmin: { type: Boolean, required: true, default: false },
},
{
timestamps: true,
}
);
产品架构:
const productSchema = new Schema({
user: {
type: Schema.Types.ObjectId,
required: true,
ref: "users",
},
name: { type: String, required: true },
image: { type: String, required: true },
brand: { type: String, required: true },
category: { type: String, required: true },
description: { type: String, required: true },
reviews: [
{
name: { type: String, required: true },
rating: { type: Number, required: true },
comment: { type: String, required: true },
user: {
type: Schema.Types.ObjectId,
required: true,
ref: "users",
},
},
{
timestamps: true,
},
],
rating: { type: Number, required: true, default: 0 },
reviewNumber: { type: Number, required: true, default: 0 },
price: { type: Number, required: true, default: 0 },
countInStock: { type: Number, required: true, default: 0 },
});
我想获取产品的所有评论。这是我的控制器
//* desc Get all reviews
//* route GET /product/:id/review
//* access Public
const getAllReviews = async (req, res) => {
try {
const product = await Product.findById(req.params.id);
const reviews = product.reviews.find({});
return res.status(200).json({
success: true,
reviews,
});
} catch (error) {
console.log(error);
return res.status(500).json({
success: false,
message: "Internal server error",
});
}
};
但是当我使用 Postman 进行测试时。结果报错500,怎么才能得到所有review?
错误:
TypeError: #<Object> is not a function
at Proxy.find (<anonymous>)
at getAllReviews (D:\Workspace\Projects\e-commerce\server\src\controllers\product.controller.js:210:37)
at processTicksAndRejections (internal/process/task_queues.js:95:5)
如果您想发送产品的所有评论,您不需要添加此行
const reviews = product.reviews.find({});
您只需输入
const reviews=product.reviews;