javascript - findOne 抛出未定义,即使数据在那里

标签 javascript mongodb meteor react-router minimongo

我是 Meteor 的新手,所以我一直在玩,现在我遇到了这个问题。

我正在使用 React Router 尝试显示基于 URL/(:userId) 的主题。如果 URL 中没有插入 userId,它应该显示当前用户的主题,如果没有当前用户,它应该显示默认主题。

它是随机工作的。有时我得到正确的主题,有时它在读取 themeColor 时抛出未定义,即使数据在那里。我可以通过 console.log 看到它总是获得正确的 Id,但 findOne 仍然会抛出未定义的错误。它特别发生在我更改 URL (/xyz) 并返回默认值 (/) 时。

我通过控制台验证,userId 是 themeColor 和 themeTextColor 的实际所有者。

我正在使用 React、React-router、自动发布。我删除了不安全的。

getMeteorData() {

    var currentViewedPageId = this.props.params.userId? this.props.params.userId:(Meteor.userId()?Meteor.userId():false);
    console.log(currentViewedPageId); //Allways right
    console.log(Personalization.findOne({owner: currentViewedPageId}).themeColor); //Sometimes undefined, sometimes not
    if(currentViewedPageId)
    {

        return {
        currentUser: Meteor.user(),
        themeColor: Personalization.findOne({owner: currentViewedPageId}).themeColor,
        themeTextColor: Personalization.findOne({owner: currentViewedPageId}).themeTextColor
        };
    }
    return {
        currentUser: Meteor.user()
    }

},

最佳答案

因为代码有时能正常工作。可能有一些与架构不匹配的测试数据。所以测试集合中的所有数据。

关于javascript - findOne 抛出未定义,即使数据在那里,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34830214/

相关文章:

javascript - Jquery:使用 setInterval 进行计数

java - TokenStore MongoDB Spring OAuth2

mongodb - 计数提高性能

javascript - 铁路由器: Meteor JS

javascript - 关于 ngshow 和范围的问题

javascript - 根据用户输入动态构造数组 - Javascript/jQuery

mongodb - 如何显示存储在 Redis 中的所有对象?

meteor - 如何使用 okgrow :analytics package in Meteor? 将用户 ID 发送到 Google Analytics

meteor - 在 meteor 中的集合中迭代时,是否有一种获取索引的方法? [复制]

javascript - 如何在 Angular 2 或 4 的 Jasmine 测试中模拟鼠标事件