繁体   English   中英

如何使用 object 上的点运算符访问密钥,其中密钥以 javascript 中的_开头?

[英]How to access a key using the dot operator on an object in which the key begins with :_ in javascript?

我正在做一个初学者的 Nodejs API 项目我需要发布到 API 端点 /api/users/:_id/exercises 并且当我得到 req.body 时,当我执行 console.log() 时,它具有以下形式:

 { ':_id': '61d0c0b2fa1547d5c637e03c', description: 'Pusups', duration: '25', date: '2021-12-29' }

现在,我试图通过使用它们的键和点运算符来获取这些对象的值,但我找不到获取值为 61d0c0b2fa1547d5c637e03c 的 object 的键的方法。 我可以访问 req.body.description 和 req.body.duration 和 req.body,date 但我无法访问 req.body.:_id。

我尝试了以下方法来练习并找到一种方法来访问他们在此 object 中的第一个属性,但我做不到。

 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 时,发布尝试失败。 这是我的帖子 function:

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

这是我在repli上的代码的链接

请帮忙!

你可以这样做

 const id = req.body[':_id']

您可以通过以下方式访问它:

console.log(object1[":_id"]);

我认为使用点运算符不可能做到这一点,但只要您可以访问该字段,我认为这不是问题。

您误解了这一行的意图:

app.post('/api/users/:_id/exercises', async function(req, res, next) {

这是Express 路由参数的示例。 来自 Express 文档:

路由参数被命名为 URL 段,用于捕获在 URL 中的 position 处指定的值。 捕获的值填充到 req.params object 中,路径中指定的路由参数的名称作为它们各自的键。

与其向文字端点/api/users/:_id/exercises发出请求,不如向/api/users/<someUserId>/exercises之类的东西发出请求,其中someUserId是有效的 ObjectId。 然后,您将使用req.params._id在代码中检索此值。

如何使用 Object.values() 方法?

let firstValue= Object.values(object1)[0];
let secondValue= Object.values(object1)[1];

console.log(firstValue); //logs 61d0c0b2fa1547d5c637e03c
console.log(secondValue);//logs pusups

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM