這是包含架構的檔案
let mongoose = require('mongoose');
let Schema = mongoose.Schema;
const productSchema = new Schema({
_id: {
type: Number,
required: true
},
product_name: {
type: String,
required: true
},
price: {
type: String,
required: true
},
quantity: {
type: Number,
required: true
},
product_collection: {
type: String,
required: true,
enum: ['Nike' , 'Addidas']
},
product_image_url: {
type: String,
required: true
},
product_type: [
{
color: {
type: String,
required: true,
}
},
{
size: {
type: Number,
required: true,
enum: ['40', '41' , '42']
}
}
]
})
const Product = mongoose.model('Product' , productSchema);
module.exports = Product;
這是我要創建產品的種子檔案
//Require Models
const mongoose = require('mongoose');
//Require Models
const Product = require('./models/product');
//Connecting to DB server
mongoose.connect('mongodb://localhost:27017/ecom', {
useNewUrlParser: true,
useUnifiedTopology: true,
})
.then(() => {
console.log('DATABASE CONNECTED')
})
.catch(err => {
console.log('SOMETHING WENT WRONG WITH MONGO')
console.log(err)
})
const p = new Product({
_id: 1,
product_name: 'Nike HyperVenom',
price: 150,
quantity: 30,
product_collection: 'Nike',
product_image_url: 'zzzzz',
product_type: [
{
color: 'red'
},
{
size: [41 , 42]
}
]
})
p.save().then(p => {
console.log(p)
})
.catch(e => {
console.log(e)
})
這是控制臺中顯示的錯誤。
Error: Product validation failed: product_type.1.color: Path `color` is required
errors: {
'product_type.1.color': ValidatorError: Path `color` is required.
at validate (C:\Users\hadiz\Desktop\Business\portfolioprojects\ecommerce
\node_modules\mongoose\lib\schematype.js:1277:13)
at C:\Users\hadiz\Desktop\Business\portfolioprojects\ecommerce\node_modu
les\mongoose\lib\schematype.js:1260:7
at Array.forEach (<anonymous>)
at SchemaString.SchemaType.doValidate (C:\Users\hadiz\Desktop\Business\p
ortfolioprojects\ecommerce\node_modules\mongoose\lib\schematype.js:1210:14)
at C:\Users\hadiz\Desktop\Business\portfolioprojects\ecommerce\node_modu
les\mongoose\lib\document.js:2690:18
at processTicksAndRejections (node:internal/process/task_queues:76:11) {
properties: [Object],
kind: 'required',
path: 'color',
value: undefined,
reason: undefined,
[Symbol(mongoose:validatorError)]: true
}
},
_message: 'Product validation failed'
}
知道如何解決這個問題,我是 mongoose 和 mongoDB 的初學者。我認為問題出在 product_type 部分,我是否在種子檔案中以正確的方式給了他們一個值?
uj5u.com熱心網友回復:
product_type架構中的物件表明其中的每個物件都必須有一個color鍵值對。錯誤是關于product_type(索引 1)中的第二個物件沒有color鍵。您應該product_type從陣列更改為物件。IE
product_type: {
color: {
type: String,
required: true,
},
size: [{
type: Number,
required: true,
enum: [40, 41, 42]
}],
}
你的輸入應該變成:
product_type: {
color: "red",
size: [41, 42],
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/366134.html
上一篇:如何使用貓鼬復制欄位資料并在同一檔案的另一個欄位中使用它?
下一篇:單擊影像以在URL字串中傳遞名稱
