FindById 和 FindOne 不适用于我从 Angular 本地存储获得的 ID 或用户名

Posted

技术标签:

【中文标题】FindById 和 FindOne 不适用于我从 Angular 本地存储获得的 ID 或用户名【英文标题】:FindById & FindOne do not work on IDs or usernames that I get from Angular Local Storage 【发布时间】:2019-05-23 05:30:55 【问题描述】:

我正在制作一个快递系统,其中一个特许经营商需要将包裹发送到另一个特许经营商。用户输入包裹需要去的特许经营的名称,我正在获取 ID 并存储在“dispatchedTo”中。当我从 Angular localStroage 获取“dispatchedBy”的 ID 时,我在用户(特许经营权)登录系统时保存了它。但是 findById、findOne 甚至 find 在应用于从 localStorage 获取的属性时都不起作用。

    //This Part Does not return franchise... franchise object is empty
    let franchise = await Franchise.findById(req.body.dispatchedBy);
        if(!franchise)
            return res.json(error: message: "Origin Not Found!",);
        
    //This part work... franchise1 is the right object
        let franchise1 = await Franchise.findById(req.body.dispatchedTo);
        if(!franchise1)
            return res.json(error: message: "Destination Not Found!",);
        

MongoDB 保存 ID 为 'dispatchedBy' 和 'dispatchedTo' 的记录: "_id":"5c1fdcd0dc5ce60e8c856ca1","dispatchedBy":"5c1c06c2f458b617506f1ac1","dispatchedTo":"5c1de40419975e0a6c224d6a","dispatchedOn":"2018-12-23T19:03:50.997Z18-""receiveOn":" -23T19:03:50.997Z","packet":"5c1ea84ca706ba112c9dbe9e","dispatchStatus":"DisJanu","user":"Sohail","__v":0

但是,当我应用填充时,'dispatchedBy' 返回 null。

router.get('/', async(req, res)=>
const dispatch = await Dispatch.find().sort('dispatchedOn').populate('packet', 'packetNumber _id').populate('dispatchedBy', 'title _id').populate('dispatchedTo', 'title _id');
return res.json(dispatch);

);

任何可能的解决方法?

【问题讨论】:

【参考方案1】:

所以findById 仅根据_id 字段进行过滤。你可以试试findOnelike

Franchise.findOne( dispatchedBy: req.body.dispatchedBy );
Franchise.findOne( dispatchedTo: req.body.dispatchedTo );

【讨论】:

忍无可忍!我也试过 findOne,返回 null。我正在从 localStorage 中获取 dispatchedBy,而 findOne、find 或 findbyId 无法与 dispatchedBy 一起使用。我试过这个:将用户的用户名和密码存储在 localStorage 中,然后尝试通过从 localStorage 中检索用户名和密码来进行身份验证,并且猫鼬再次找不到用户。一定是 Angular localStorage,我现在在扯头发。 嘿尼米什!我发现了问题。我以具有不同角色的用户身份登录:(我以管理员身份而不是特许经营权身份登录:(

以上是关于FindById 和 FindOne 不适用于我从 Angular 本地存储获得的 ID 或用户名的主要内容,如果未能解决你的问题,请参考以下文章

Mongoose 中的 Model.findOne() 和 Model.findById() 有啥区别?

更新 findOne()/find()/findById() 返回的文档 - mongoose

更新 findOne()/find()/findById() 返回的文档 - mongoose

播放 1.2.4 findByID 不适用于复合 ID

Mongoosejs:findById 比 findOne 快吗?

SpringBoot关于SpringDataJpa中findOne()方法报错问题