我正在創建一個電子商務應用程式,現在我想使用 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。我怎樣才能獲得所有評論?
錯誤:
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)
uj5u.com熱心網友回復:
如果要發送產品的所有評論,則無需添加此行
const reviews = product.reviews.find({});
你可以簡單地輸入
const reviews=product.reviews;
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/467810.html
