我正在做一個初學者的 Nodejs API 專案, 我需要發布到 API 端點 /api/users/:_id/exercises 并且當我得到 req.body 時,它具有以下形式,當我執行 console.log() 時:
{
':_id': '61d0c0b2fa1547d5c637e03c',
description: 'Pusups',
duration: '25',
date: '2021-12-29'
}
現在,我試圖通過使用它們的鍵和點運算子來獲取這些物件的值,但我找不到獲取值為 61d0c0b2fa1547d5c637e03c 的物件的鍵的方法。我可以訪問 req.body.description 和 req.body.duration 和 req.body,date 但我不能訪問 req.body.:_id。
我嘗試了以下練習并找到一種方法來訪問它們在此物件中的第一個屬性,但我不能。
const object1 = {
':_id': '61d0c0b2fa1547d5c637e03c',
description: 'Pusups',
duration: '25',
date: '2021-12-29'
}
let someArray = Object.keys(object1);
console.log(object1.description);
console.log(object1.duration);
console.log(object1.date);
const someVariable = someArray[0].substring(0, 4);
console.log(someVariable);
console.log(object1.someVariable);
console.log(object1._id);
Pusups 25 2021-12-29 :_id undefined undefined
當我嘗試發布到 API 端點 /api/users/:_id/exercises 時,發布嘗試失敗。這是我的帖子功能:
app.post('/api/users/:_id/exercises', async function(req, res, next) {
console.log(req.body);
if (req.body) {
//new mongoose.Types.ObjectId().toHexString()
const id = mongoose.Types.ObjectId(body.':_id');
try {
const newExercise = await addNewExercise(
{
_id: id,
description: req.body.description,
duration: req.body.duration,
date: req.body.date ? req.body.date : null
}
);
console.log(newExercise);
res.json(
{
username: newExercise.username,
description: newExercise.description,
duration: newExercise.duration,
date: newExercise.date,
_id: newExercise._id
}
);
} catch (e) {
console.error(e);
}
}
});
這是我在replit 上的代碼的鏈接
請幫忙!
uj5u.com熱心網友回復:
你可以這樣做
const id = req.body[':_id']
uj5u.com熱心網友回復:
你誤解了這一行的意圖:
app.post('/api/users/:_id/exercises', async function(req, res, next) {
這是Express 路由引數的示例。從 Express 檔案:
路由引數是命名的 URL 段,用于捕獲在 URL 中的位置指定的值。捕獲的值填充在 req.params 物件中,路徑中指定的路由引數的名稱作為它們各自的鍵。
不是向文字端點發出請求,而是/api/users/:_id/exercises向類似的內容發出請求/api/users/<someUserId>/exercises,其中someUserId是有效的 ObjectId。然后,您將在代碼中使用 檢索此值req.params._id。
uj5u.com熱心網友回復:
您可以通過以下方式訪問它:
console.log(object1[":_id"]);
我不認為可以使用點運算子來做到這一點,但只要您可以訪問該欄位,我認為這不是問題。
uj5u.com熱心網友回復:
如何使用 Object.values() 方法?
let firstValue= Object.values(object1)[0];
let secondValue= Object.values(object1)[1];
console.log(firstValue); //logs 61d0c0b2fa1547d5c637e03c
console.log(secondValue);//logs pusups
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/401496.html
標籤:javascript 节点.js MongoDB 猫鼬
