嘿,我正在為我的 MERN 應用程式創建一條路線,我想在其中進行兩個find mongoose背靠背的查詢。我首先在 params 模型中找到一個具有相同剪輯名稱的條目,該條目包含一個元素欄位(在其架構中定義)。然后我想在元素模型中找到另一個具有相同元素名稱的條目。但是我遇到了這個錯誤。有人可以幫助我。謝謝
const elementstemplate = require("../models/elements.js");
const paramstemplate = require("../models/params.js");
router.get("/getparams/:clipName", async (req, res) => {
paramstemplate
.findOne({ clipName: req.params.clipName })
.then((params) => {
const fetchedelement = params.element;
res.json(params);
})
.then((fetchedelement) => {
elementstemplate
.findOne({ elementName: fetchedelement })
.then((elementdata) => {
res.json(elementdata);
});
});
});
uj5u.com熱心網友回復:
您不能在一個請求中發送 2 個回應。在第一個 .then() 中回傳 fetchedElement。在第二個處理它,然后將它們作為 json 發送回客戶端。但是如果你的回呼函式是異步的,你可以使用 await 而不是使用 .then()。
uj5u.com熱心網友回復:
擴展上一個答案(https://stackoverflow.com/a/69832516/177397),如果您利用 async/await,它會更干凈。這樣,您只需要一個接一個地呼叫兩個查詢。然后,您可以在回應的物件中回傳資料。以下是轉換為 async/await 時代碼的外觀:
const elementstemplate = require("../models/elements.js");
const paramstemplate = require("../models/params.js");
router.get("/getparams/:clipName", async (req, res) => {
// Get the params
const params = await paramstemplate.findOne({ clipName: req.params.clipName });
// Get the element data
const fetchedelement = params.element;
const elementdata = await elementstemplate.findOne({ elementName: fetchedelement });
// Return an object with both the params and the element data
return res.json({ params, elementdata});
});
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/348832.html
