我试图通过其中一个键的值获取数组中的对象.
数组:
var arr = [
{
city: 'Amsterdam',
title: 'This is Amsterdam!'
},
{
city: 'Berlin',
title: 'This is Berlin!'
},
{
city: 'Budapest',
title: 'This is Budapest!'
}
];
Run Code Online (Sandbox Code Playgroud)
我尝试过这样的事情,lodash但没有成功.
var picked = lodash.pickBy(arr, lodash.isEqual('Amsterdam');
Run Code Online (Sandbox Code Playgroud)
它返回一个空对象.
关于如何以lodash的方式做到这一点的任何想法(如果它甚至可能)?我可以用经典的方式做到这一点,创建一个新的数组,循环遍历所有对象,并将符合我标准的对象推送到新数组.但有没有办法用lodash做到这一点?
这不是重复的.
我试图访问返回的MongoDB(mongoose)查找的属性.
如果我尝试控制整个对象的日志,我可以看到它.但是,如果我尝试记录一个属性,我会得到undefined.对象就在那里!
function getAll () {
let d = q.defer();
User.find({}, function (err, docs) {
if (err) {
d.reject(err);
}
for(let user of docs) {
console.log(user); // This works!
console.log(user.email); // This returns undefined!
}
d.resolve();
});
return d.promise;
}
Run Code Online (Sandbox Code Playgroud)
任何的想法?我也尝试使用JSON.parse,以防它被字符串化(只是为了确保),但事实并非如此.
UPDATE
所以我似乎可以使用访问结果user._doc.email.但究竟是什么原因造成 我不记得以前必须这样做.
我很迷茫.我开始在Ionic(仍在学习)和AngularJS开发.
现在,我尝试将Firebase用作应用程序后端.我做了一个facebook身份验证过程,在用户通过身份验证后,会将一个对象添加到数据库中(具有以下属性:名称,用户ID和个人资料图片).
到现在为止还挺好.我仍然不明白Firebase是否仅适用于客户端应用程序(作为任何后端服务的替代品),还是专为NodeJS等设计的?
我提出这个问题的原因将作为例子展示:
现在对于黄金问题,让我们说我需要向用户添加单独的"auth_level"(例如)属性.这发生在.js服务(客户端)中.客户端可以访问它,因此他可以更改自己的用户名等内容.
return {
'name': userData.name,
'profilePic': 'http://graph.facebook.com/' + userData.id + '/picture',
'userId': userData.id
};
所以,是的,我知道我可以创建规则来阻止用户说创建一个新对象,但对于上面的例子 - 他已经为了推送到数据库而具有写访问权限.在我看来,在中间使用Fireabse安全地拥有某种桥(例如NodeJS)的唯一方法,但Firebase失去了"实时"功能,对吧?还是我错了?
所以首先 - 我错过了什么重要的东西吗?
其次,如果这确实不安全,你会推荐其他任何实时后端方法吗?就像使用像MongoDB这样的数据库,并让Node服务器进行所有过滤并通过Web套接字与客户端进行通信.
我对混合移动开发的整个世界都非常陌生,特别是AngularJS,我曾经做过很多PHP(主要是Laravel),但这对我来说似乎有点暗.我不习惯将这些敏感数据暴露给客户端.
我很抱歉,如果我在这里看起来有点愚蠢,但我会很感激帮助.
firebase firebase-security firebase-authentication firebase-realtime-database
javascript ×2
node.js ×2
arrays ×1
ecmascript-6 ×1
firebase ×1
lodash ×1
mongodb ×1
mongoose ×1