gpt4 book ai didi

javascript - Mongoose 查询返回未定义的结果

转载 作者:太空宇宙 更新时间:2023-11-04 03:21:21 25 4
gpt4 key购买 nike

我有这个对象

{
websites: ['georgiancollege.ca'],
keys:
[{
_id: 5ac529fe51811331a3b824e5,
name: 'Google',
value: 'key_example'
},
{_id: 5ac529fe51811331a3b824e4, name: 'Facebook', value: ''},
{_id: 5ac529fe51811331a3b824e3, name: 'Instagram', value: ''}],
_id: 5ac529fe51811331a3b824e2,
username: 'a@a.a',
isPremium: false,
__v: 0
}

这段代码:

router.get('/keys/edit/:user_id&:key_id', (req, res, next) => {
Account.findOne({_id: req.params.user_id}, (err, acc) => {
console.log(acc);
console.log();
var selectedKey = findById(acc.keys, req.params.key_id);
console.log(selectedKey);
res.render('admin/edit', {
title: 'Edit keys',
user: req.user,
key: selectedKey,
account: acc,
});
});
});

这是 findById() 方法:

function findById(source, id) {
return source.filter((obj) => {
// coerce both obj.id and id to numbers
// for val & type comparison
return obj.id === id;
})[0];
}

我想要实现的是将 api-key 传递给 View 。问题是 selectedKey 查询返回未定义。为什么?好像很有道理。

使用 params 传递的 key 是正确的。

最佳答案

router.get('/keys/edit/:user_id&:key_id', (req, res, next) => {
Account.findOne({_id: req.params.user_id}, (err, acc) => {
console.log(acc);
console.log();
var selectedKey = findById(acc.keys, req.params.key_id);

if(selectedKey){
console.log(selectedKey);
res.render('admin/edit', {
title: 'Edit keys',
user: req.user,
key: selectedKey,
account: acc,
});'
} else {
// Add your code if selectedKey is not exist
}
});
});

function findById(sources, id) {
if(!sources) return null;

let source= sources.find(_s=>{
return _s._id.toString() === id;
})
// If you need only value
return source ? source.value : null;

// Else
// return source ? source : null;
}

希望这对你有帮助......

关于javascript - Mongoose 查询返回未定义的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49765557/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com