无法在控制器中使用 Mongoose 查询访问范围变量集

Cannot access scope variable set using Mongoose query within controller

在我的 MEANJS 应用中。我正在将范围变量的值设置为查询结果,来自我的控制器函数

$scope.myVar = User.query();
console.dir($scope.myVar);     //Returns all the documents from the DB correctly
console.log('User's name is : ' + $scope.myVar[0].name);   //This comes as undefined

不知何故,在下一行中,当我试图在同一个控制器函数中打开名称字段时,它显示为未定义。此外,整个结果在我的视图文件中被绝对正确地读取。所以当我打电话给

{{myVar.name}}

在我的视图文件中,它正确输出了名称。我根本无法理解这种行为。这是我第一次使用 Angularjs,我可能会错过一些基本的东西,但我很感激此时的任何帮助。

编辑 - $scope.myVar 的长度在控制器中始终为 0

基本上 User.query() returns 一个 promise 对象,所以你需要在 promise success 中更新你的 $scope 对象。

代码

User.query().$promise.then(function(res){
   //you will get response here in data obj
   $scope.myVar = res;
   console.dir($scope.myVar);//Returns all the documents from the DB correctly
   console.log('User's name is : ' + $scope.myVar[0].name);   //This comes as undefined
});

编辑:找到答案。 meanjs 中的回调函数格式为:

 var myObj= User.query(function(response) {
                console.log('Inside success response');
                 //Can access myObj values here easily
            }, function(errResponse) {
                console.log('Inside error response ' + errResponse);
        });

我无法弄清楚如何在控制器中访问我的 $scope.myVar,但我通过创建自己的工厂方法来按照我希望的排序方式检索数据来完成解决方法。无法访问这些查询结果的问题实际上也在其他部分造成了问题。所以如果有人有答案,请告诉我。

现在发布 link 我曾经弄清楚如何插入 MEAN.JS 工厂方法。希望这对某人有所帮助。

https://groups.google.com/forum/#!searchin/meanjs/query()/meanjs/4R7rIolH9bs/P1R4YlKgowUJ