MEANJS检查findOne上是否为null

时间:2015-08-05 05:39:25

标签: angularjs mongodb meanjs

我刚刚开始使用MEANJS。我正在修改样本文章模块。

查看findOne()的代码,它似乎查询db然后返回它并分配给$scope.article

    // Find existing Article
    $scope.findOne = function() {
        $scope.article = Articles.get({
            articleId: $stateParams.articleId
        });
    };

我希望它能像重定向一样,或者如果它什么都不返回则显示404。也许是因为网址上有拼写错误。我开始通过故意在URL上输入错误的ID来测试看看是什么类型的结果。

结果

  • 当ID实际存在时,在控制台中,我会看到“找到的东西”,然后是“未定义的”。
  • 当ID很糟糕时,在控制台中,我会看到“找到的东西”,然后是“未定义”,然后是400“错误请求”错误。

    // Find existing Article
    $scope.findOne = function() {
        $scope.article = Articles.get({
            articleId: $stateParams.articleId
        });
        if ($scope.article) {
            console.log('found something');
            console.log($scope.article._id);
        }
        else    {
            console.log('found NOTHING');
        }
    };
    

底线是,如何检查我是否真的得到了什么?

1 个答案:

答案 0 :(得分:2)

由于 Articles.get() 函数是异步的,因此它应返回 $promise 对象,然后您可以检查返回的对象。这样的事情应该有效:

var self = this;
Articles.get({
    articleId: $stateParams.articleId
}).$promise.then(function(data){
    if (data) {
    console.log('found something');
    console.log(data.article._id);
    self.article = data.article;
}
else {
    console.log('found NOTHING');
});