javascript - 在 Mongoose 中传递给对象数据哈巴狗
问题描述
现有代码是作为 MySQL 查询编写的,我现在正在努力将其转换为 Mongoose 查询。
我需要从主页获取按最近订阅年份排序的五个数据。
现有代码将此结果值带入数组。并且数据是通过pug view传递的,Mongoose好像带了Object的结果值。在这种情况下,我想知道如何通过 Pug 视图传递数据。
我检查了将数据从终端导入到 console.log,但出现了一个名为“发生错误[ERR_HTTP_HEADERS_SENT]: Cannot set heads after they are sent to the client
并且没有数据传递给哈巴狗”的错误。我想知道为什么会出现这个问题。
【MySQL查询】
router.get("/", function (req, res, next) {
// Main page Profile Data Process
db.query(`SELECT * FROM user ORDER BY registerDate DESC LIMIT 5`, function (
error,
data
) {
// Log Error
if (error) {
console.log(error);
}
res.render("main", {
dataarray: data,
_user: req.user,
url: url
});
});
});
【猫鼬查询】
router.get("/", function (req, res, next) {
let dataarray = [];
let userData = db.collection("user").find().limit(5).sort({
"created_at": -1
});
userData.each(function (err, doc) {
if (err) {
console.log(err);
} else {
if (doc != null) {
dataarray.push(doc)
}
}
// console.log(dataarray.login)
console.log(dataarray);
res.render("main", {
dataarray,
_user: req.user
})
});
});
[哈巴狗文件]
each profile in dataarray
.col-lg-4
img.rounded-circle(src=`${profile.avatar_url}` alt='Generic placeholder image' width='140' height='140')
h2=`${profile.login}`
p=`${profile.bio}`
p
a.btn.btn-secondary(href=`/${profile.login}` role='button') View details »
解决方案
您正在以多个块发送请求,节点/快递使用一个请求和一个响应。
发送到客户端后无法设置头部
是第二次调用 res.render 时发生的错误。此时,一个请求已经离开节点/快速进程,这告诉您您正在尝试违反一个请求/一个响应范式。
这是您的代码的一部分,您可以在其中看到为什么会发生这种情况。
router.get("/", function (req, res, next) {
let dataarray = [];
let userData = db.collection("user").find().limit(5).sort({
"created_at": -1
});
userData.each(function (err, doc) {
这部分代码将尝试为结果集中的每个项目发送响应。
像这样的东西会正常工作(我没有测试过):
router.get("/", function (req, res, next) {
db.collection("user").find().limit(5).sort({ "created_at": -1 }, function(err, userData){
res.render("main", {
dataarray: userData,
_user: req.user
})
});
});
换句话说,只需要一个 res.render 并将整个结果集传递给它。
推荐阅读
- jupyter-lab - 如何在 jupyterlab 启动器中添加自定义文件类型?
- c# - 如何对连接的 TPL 数据流块进行错误处理?
- node.js - AWS MSK 触发器 - Lambda(消费者)无限运行
- java - 映射外键 JPA
- javascript - 无法让 Google Sheets Node.js API 从工作表中获取值并将它们返回到数组中
- python - 如何使用 pyautogui 添加开和关按钮?
- python-3.x - 将数据从一个视图传递到另一个视图:Django
- android - 在最新版本的 android studio 中哪里可以找到 r.java
- git - 如何在所有 git 提交中搜索涉及多个字符串的更改,并对未更改的内容有一定的限制?
- flutter - flutter pub get : - fstore 依赖于来自依赖 async 2.8.1 的路径中的激发 UI,需要 async 2.8.1