我正在嘗試在 nodejs 中撰寫 MVC。問題是,render 方法回傳未定義,而不是資料庫資料。但如果我打電話
Website.find({}, function(err, docs) {
res.send(`docs`);
})
直接來自 index.js - 它作業得很好,我做錯了什么嗎?
index.js:
app.get('/websites', (req, res) => {
const View = require("./views/websitesView");
const Controller = require("./controllers/websitesController");
const Model = require("./models/websiteModel");
var model = new Model();
var controller = new Controller(model);
var view = new View(controller);
res.send(view.render(req, res));
})
視圖.js:
var controller = require("../controllers/websitesController");
class websitesView {
controller;
constructor(controller) {
this.controller = controller;
}
setTab(tab) {
this.tab = tab;
}
render(req, res) {
res.send(`${this.controller.getAllWebsites()}`);
}
}
module.exports = websitesView;
控制器.js:
const Website = require("../models/websiteModel");
class websitesController {
model;
constructor(model) {
this.model = model;
}
getAllWebsites() {
Website.find({}, function(err, docs) {
return docs;
})
}
}
module.exports = websitesController;
模型.js
const mongoose = require("mongoose")
const websiteSchema = new mongoose.Schema({
url: String,
user_id: String,
type: String,
status: Number,
timestamp: Date
}, {collection: "aaa_websites"})
module.exports = mongoose.model("Website", websiteSchema, 'aaa_websites')
使用在另一個檔案中定義的 Mongoose 模型回傳 Undefined沒有幫助
uj5u.com熱心網友回復:
試試這個:
index.js:
app.get('/websites', async (req, res) => {
const View = require("./views/websitesView");
const Controller = require("./controllers/websitesController");
const Model = require("./models/websiteModel");
var controller = new Controller(Model);
var view = new View(controller);
res.send(await view.render(req, res));
})
視圖.js:
var controller = require("../controllers/websitesController");
class websitesView {
controller;
constructor(controller) {
this.controller = controller;
}
setTab(tab) {
this.tab = tab;
}
async render(req, res) {
res.send(`${await this.controller.getAllWebsites()}`);
}
}
module.exports = websitesView;
控制器.js:
class websitesController {
model;
constructor(model) {
this.model = model;
}
async getAllWebsites() {
return this.model.find({})
}
}
module.exports = websitesController;
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/476009.html
