gpt4 book ai didi

javascript - 我是否必须在单独的文件中定义不同的 mongodb 模型?

转载 作者:行者123 更新时间:2023-12-02 23:26:16 26 4
gpt4 key购买 nike

最近,我一直在使用单一模型的 mongodb。当我尝试添加第二个模型时,我注意到我可能会遇到一些问题。首先,这是单个模型的代码:

riskRating.js

const mongoose = require('mongoose')
const Schema = mongoose.Schema;
let riskRatingRow = new Schema({
securitycause: {
type: String
},
operationalrisk: {
type: String
},
riskid: {
type: String
},
riskstatements: {
type: String
},
businessline: {
type: String
},
supportingasset: {
type: String
},
category: {
type: String
},
frequency: {
type: String
},
impact: {
type: String
},
inherentriskrating: {
type: String
},
controleffectiveness: {
type: String
},
residualrisk: {
type: String
}
});
module.exports = mongoose.model('riskRating', riskRatingRow);

这是我在服务器代码中使用它的方法:

server.js

   const RiskRatingRow= require('./models/riskRating');
router.route('/table').get((req, res) => {
RiskRatingRow.find((err, tableData) => {
if (err)
console.log(err);
else
res.json(tableData);
});
});

router.route('/table/add').post((req, res) => {
console.log('REQ.body is ', req.body);
const riskRatingRow = new RiskRatingRow(req.body);
riskRatingRow.save()
.then(issue => {
res.status(200).json({
'tableRow': 'Added successfully'
});
})
.catch(err => {
res.status(400).send('Failed to create new record');
});
});

第一个问题:到目前为止有什么问题吗?
现在,当我添加第二个模型时:

twoModels.js

const mongoose = require('mongoose')
const Schema = mongoose.Schema;
let riskRatingRow = new Schema({
//1st model defintion
});
const businessLineDashboardRow = new Schema({
//2nd model defintion
});
module.exports = mongoose.model('businessLineDashboard', businessLineDashboardRow);
module.exports = mongoose.model('riskRating', riskRatingRow);

我注意到在 server.js 中,当我使用第一个模型时,我没有直接引用它。我宁愿引用 singleModel.js 文件。特别是这两行:

   const RiskRatingRow = require('./models/riskRating');
// Here I am using directly the file reference RiskRatingRow
const riskRatingRow = new RiskRatingRow(req.body);
// Same thing here
RiskRatingRow.find((err, tableData) => {
if (err)
console.log(err);
else
res.json(tableData);
});

所以,当我准备使用第二个模型时,我发现自己被阻止了,因为正如我在使用第一个模型时所解释的那样,我没有直接引用它。我刚刚引用了该文件。
事实是,这实际上工作得很好。
但是,我不知道模型文件是否包含两个模型,我应该如何在服务器文件中使用它们。
这是我的另外两个问题:
1/即使我只是引用模型定义文件,代码为什么仍然有效?
2/我应该在单独的文件中定义第二个模型,并引用它以便能够使用它吗?
谢谢,我希望我说得足够清楚。

最佳答案

module.exports 可以是包含多个内容作为属性的对象:

module.exports = {
RiskRatingRow: mongoose.model('businessLineDashboard', businessLineDashboardRow),
BusinessLineDashboardRow: mongoose.model('riskRating', riskRatingRow),
}

由于默认情况下它是一个空对象 ({}),因此您也可以单独分配导出:

module.exports.RiskRatingRow = mongoose.model('businessLineDashboard', businessLineDashboardRow)
module.exports.BusinessLineDashboardRow = mongoose.model('riskRating', riskRatingRow)
<小时/>

您现在可以destructure server.js 内对象的模型:

const { RiskRatingRow, BusinessLineDashboardRow } = require('./models/twoModels')

或者,如果您想以老式方式进行操作:

const models = require('./models/twoModels')
const RiskRatingRow = models.RiskRatingRow
const BusinessLineDashboardRow = models.BusinessLineDashboardRow

关于javascript - 我是否必须在单独的文件中定义不同的 mongodb 模型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56722913/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com