编写一个函数,从MongoDB中查找所有数据并传递给控制器



我是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);
};

相关内容

  • 没有找到相关文章

最新更新