我是Mean Stack的新手。我在MVC模型中安装了express。我有一个型号叫Data
let getAllData = ()=>{
Data.find({},(err,data)=>{
if(err) throw err;
var datas = {};
data.forEach((data)=>{
datas[data._id]=data;
});
console.log(datas);
});
}
module.exports = {
Data,
store,
getAllData
}
我想从控制器调用getAllData
var mongoose = require("mongoose");
var passport = require("passport");
var User = require("../models/User");
var DataModel = require("../models/Data");
var userController = {};
// Access to root page
userController.home = function(req, res) {
// res.render('index');
// res.send(Data.find);
DataModel.getAllData();
res.render('index',{//I want to send all the data to this view and view them from the page});
}
我只想在模型中创建一个函数来访问所有数据,并在我的视图中显示它们,中间有一个控制器。我是一个全新的人,我在任何地方都找不到确切的解决方案。
谢谢。
您应该使用异步等待。这将允许您调用函数,等待promise解析,然后响应to请求。
const getAllData = async () => {
return Data.find({})
.then(data => {})
.catch(error => {
throw error;
});
};
module.exports = {
Data,
store,
getAllData
};
当您将函数定义为async时,它将返回一个promise,因此您可以等待它的响应。
var mongoose = require("mongoose");
var passport = require("passport");
var User = require("../models/User");
var DataModel = require("../models/Data");
var userController = {};
// Access to root page
userController.home = async function(req, res) {
// res.render('index');
// res.send(Data.find);
const data = await DataModel.getAllData();
res.render("index", data);
};