我有一個資料庫,我有兩個集合:農場和產品。
農場與產品相關聯,產品有多個農場,在那里可以找到它們。
下面的代碼來自 products.js
const mongoose = require("mongoose"/span>) 。
const { Schema } = mongoose;
const productSchema = new mongoose.Schema({
name: {
type: String,
required: true,
},
價格: {
type: Number,
required: true。
min: 0,
},
category: {
type: String,
lowercase: true,
enum: ["水果", "蔬菜", "牛奶"]。
},
農場: [
{
type: Schema.Types.ObjectId。
ref。"農場"。
},
],
});
const Product = mongoose.model("Product", productSchema)。
module.exports = Product;
我有一個get路由,它從req.params中獲取id,并使用ID作為參考找到產品,作業正常。然而,每當我試圖用 "農場 "來填充產品時,我就會得到Schema尚未被注冊的錯誤。然而,每當我檢查mongo集合時,我可以看到它是與農場相關的。
我交叉檢查了模式,我認為我已經正確地匯出了模式,但我一直遇到MissingSchema錯誤,只是找不到錯誤所在。
這是我遇到錯誤的代碼。
這是我遇到錯誤的代碼。
const mongoose = require("mongoose"/span>) 。
const Farm = require("./models/farm") 。
const Product = require("./models/products") 。
app.get("/products/:id", async(req, res, next)=> {
const { id } = req.params;
const products = await Product. findById(id).populate("farm") 。
console.log( products)。
res.render("product/details"/span>, { products });
});
如果我排除了populate方法,產品細節就會被顯示出來,但每次我包括populate方法時,我都會得到這個錯誤
UnhandledPromiseRejectionWarning。MissingSchemaError。模式還沒有為模型 "farm "注冊。uj5u.com熱心網友回復:
當你創建FarmSchema模型時,你是否將其命名為 "Farm"?
const Farm = mongoose. model('Farm', FarmSchema)
當你在ProductsSchema中參考該模型時,你將其稱為'farm',小寫,這是一個不同的變數,它將需要與用于創建該模型的變數相同。
farm: [
{
type: Schema.Types.ObjectId。
ref。"farm", // this should be; ref: "Farm"。
},
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/307936.html
標籤:

