節目描述:我有一個接受一個POST請求(程式request一個“hometask”以其的)name,description,importance和group提供引數。我需要將提供的組引數標識為資料庫中的集合名稱(每個集合將對應于特定的組,因此每個組都將有一個 hometasks-documents 的集合)。每個新檔案都應該使用 Mongoose 模式物件創建。
問題:我知道在 Python 中,pymongo當處理一個不存在的集合時,它會自動創建,但是,在 mongoose 中事實證明并非如此。我無法為新的檔案物件提供集合名稱。在 中提供{collection: request.group}新物件時api/hometask.js,在發出新請求時開始出現錯誤訊息:MongooseError: document must have an _id before saving。我仍然無法理解導致此問題的原因。我將不勝感激任何幫助!
- 主檔案夾架構:

- 服務器.js
const express = require('express')
require('dotenv').config()
const mongoose = require('mongoose')
const morgan = require('morgan')
const path = require('path')
let app = express();
const port = process.env.PORT || 3000;
mongoose.connect(process.env.uri, { useNewUrlParser: true })
.then(db => console.log('[ok] connected to db))
.catch(err => console.error(err))
app.use(express.json())
app.use(express.urlencoded({extended: false}))
app.use(morgan('dev'))
app.use('/api/hometasks', require('./api/hometask'))
app.use('/', express.static(path.join(__dirname, '../dist')))
app.listen(port)
- api/hometask.js
const express = require('express');
const router = express.Router();
const Record = require('../models/hometask')
router.post('/', async (req, res) => {
let request = req.body
const record = new Record(request, {collection:request.group});
try {
await record.save();
res.json({
status: 'success'
});
} catch (err) {
console.log(err)
}
})
module.exports = router
- 模型/hometask.js
const mongoose = require('mongoose');
const { Schema } = mongoose;
let Record = new Schema({
name: {
type: String,
required: true
},
description: {
type: String,
required: true
},
importance: {
type: Boolean,
required: true
},
group: {
type: String,
required: true
}
});
module.exports = mongoose.model('hometask', Record);
uj5u.com熱心網友回復:
在 mongoose 中,集合名稱是按模型設定的,而不是按檔案設定的。
請注意,模型建構式不接受選項物件。
創建模型時,您應該在對mongoose.model的呼叫中設定集合名稱,而不是從該模型創建檔案時。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/370561.html
