如何在 nodejs 中链接过滤器和映射方法?
How to chain filter and map methods in nodejs?
所以我正在做一个项目,我正在调用数据库以检索存储在那里的数据。此数据以数组形式出现。这是代码:
const allLogins = await Login.find().sort("name");
const token = req.header("x-auth-token");
const user = jwt.verify(token, config.get("jwtPrivateKey"));
const logins = allLogins
.filter((login) => login.userId === user._id)
.map((login) => {
login.password = decrypt(login.password);
});
如果我在解密 运行 之后调用 console.log,我会看到它已正确完成。我遇到的问题是,如果我 console.log(logins) 它说它是两个未定义的项目的数组。相反,如果我 运行 像这样...
const allLogins = await Login.find().sort("name");
const token = req.header("x-auth-token");
const user = jwt.verify(token, config.get("jwtPrivateKey"));
let logins = allLogins.filter((login) => login.userId === user._id);
logins.map((login) => {
login.password = decrypt(login.password);
});
然后它就可以正常工作了。我不确定为什么第一组代码不起作用,为什么第二组代码起作用。
如有任何帮助,我们将不胜感激!
基本:
- 数组。过滤器 - 接受回调并回调 return 布尔值(符合我们的条件)
- array.map - 接受回调并回调 return 转换后的对象
在第二个工作示例中:
logins.map((login) => {
// note: logins is iterated but not assigned to logins back
// so accessing login is working
login.password = decrypt(login.password); // map should return data
+ return login; // if we update all code will work
});
现在来看第一个例子:
const logins = allLogins
.filter((login) => login.userId === user._id)
.map((login) => {
login.password = decrypt(login.password);
+ return login; // this will fix the issue
});
所以我正在做一个项目,我正在调用数据库以检索存储在那里的数据。此数据以数组形式出现。这是代码:
const allLogins = await Login.find().sort("name");
const token = req.header("x-auth-token");
const user = jwt.verify(token, config.get("jwtPrivateKey"));
const logins = allLogins
.filter((login) => login.userId === user._id)
.map((login) => {
login.password = decrypt(login.password);
});
如果我在解密 运行 之后调用 console.log,我会看到它已正确完成。我遇到的问题是,如果我 console.log(logins) 它说它是两个未定义的项目的数组。相反,如果我 运行 像这样...
const allLogins = await Login.find().sort("name");
const token = req.header("x-auth-token");
const user = jwt.verify(token, config.get("jwtPrivateKey"));
let logins = allLogins.filter((login) => login.userId === user._id);
logins.map((login) => {
login.password = decrypt(login.password);
});
然后它就可以正常工作了。我不确定为什么第一组代码不起作用,为什么第二组代码起作用。
如有任何帮助,我们将不胜感激!
基本:
- 数组。过滤器 - 接受回调并回调 return 布尔值(符合我们的条件)
- array.map - 接受回调并回调 return 转换后的对象
在第二个工作示例中:
logins.map((login) => {
// note: logins is iterated but not assigned to logins back
// so accessing login is working
login.password = decrypt(login.password); // map should return data
+ return login; // if we update all code will work
});
现在来看第一个例子:
const logins = allLogins
.filter((login) => login.userId === user._id)
.map((login) => {
login.password = decrypt(login.password);
+ return login; // this will fix the issue
});