小编use*_*960的帖子

查询集合而不在mongoose中传递模式

我是否理解正确,如果我想查询集合,我必须执行以下操作:

    var mongoose = require("mongoose");

mongoose.connect();

var db = mongoose.connection;

db.on('open', function callback () {

    var kittySchema = mongoose.Schema({
        name: String
    })

    var Kitten = mongoose.model('Kitten', kittySchema)


    Kitten.find(function (err, kittens) {
        console.log(kittens);
    })

});
Run Code Online (Sandbox Code Playgroud)

我是否必须每次都指定架构,即使已经有一组小猫?

为什么我不能做类似的事情db.Kittens.find()

mongoose mongodb

19
推荐指数
3
解决办法
3万
查看次数

为什么我必须在这里调用$ scope.$ digest()?

我创建了一个显示工具提示的指令:

app.directive('tooltip',function(){
    return{
        restrict: 'A',
        link: function(scope,element,attr){
            element.bind('mouseenter',function(e){

                scope.setStyle(e);

            });
        }
    }
});
Run Code Online (Sandbox Code Playgroud)

相应的setStyle()功能:

$scope.setStyle = function(e){
    $scope.style = {
        position: 'absolute',
        // some other styles
    };

    $scope.$digest();
};
Run Code Online (Sandbox Code Playgroud)

$scope.style 适用于此:

<span ng-style="style">I am a tooltip</span>
Run Code Online (Sandbox Code Playgroud)

这是我视图的一部分,由拥有的控制器处理 $scope.style

为什么我必须调用$digest()才能应用更改$scope.style,之前已声明并初始化?

data-binding angularjs angularjs-directive

16
推荐指数
2
解决办法
3万
查看次数

AngularJS:等待异步调用

我无法理解AngularJS的承诺概念.

我有一个提供者:

var packingProvider = angular.module('packingProvider',[]);

packingProvider.provider('packingProvider',function(){
    return{
       $get: function($http){
           return{
              getPackings: function(){
                  $http.post('../sys/core/fetchPacking.php').then(function(promise){
                      var packings = promise.data;
                      return packings;
                  });
              }
           }
       }
   }
});
Run Code Online (Sandbox Code Playgroud)

如您所见,这提供了一个getPackings()返回对象的方法

现在,如果我在主应用程序中使用它来接收数据,则调用将是异步的,从而导致我必须"等待"数据的问题:

var packings = packingProvider.getPackings();

console.log(packings); // undefined
Run Code Online (Sandbox Code Playgroud)

如果不将进程重构到我的主控制器中,我该怎么做?

javascript synchronization angularjs

11
推荐指数
2
解决办法
3万
查看次数

为什么我们仍然使用HTTP而不是WebSockets来构建Web应用程序?

最近我深入研究了WebSockets的主题并构建了一个利用它们的小应用程序.

现在我想知道为什么仍在使用基于HTTP的API',或者更确切地说,为什么它们仍然被提出.

据我所知,通过HTTP可以实现WS无法做到的任何事情,但另一方面我获得了很多改进.

从HTTP驱动的后端获取比从WS后端获得更多好处的应用程序的真实世界示例是什么?

web-applications http websocket web

7
推荐指数
2
解决办法
887
查看次数

forEach中的return语句不会停止执行函数

我试图确定数组是否包含某个项目.如果是,我想保留该功能,否则应该添加.

function addPacking(item){

    data.packings.forEach(function(entry){
       if(item.name == entry.name){
           return;
       }
    });

    data.packings.push(item);

}
Run Code Online (Sandbox Code Playgroud)

不幸的是,即使满足if条件,也会推送数据.如何在不使用else条件的情况下阻止此行为?

(我不想使用,else因为我的实际代码比这复杂得多,我想让它保持可读性)

编辑:

forEach异步执行吗?

javascript

6
推荐指数
2
解决办法
6334
查看次数

仅通过引用绑定到服务属性?

考虑一项服务:

app.service('myService',function(){
    this.strProp = '';
    this.objProp = {
        content: ''
    }
})
Run Code Online (Sandbox Code Playgroud)

和控制器:

app.controller('myCtrl',function($scope,myService){
    $scope.str = myService.strProp;
    $scope.obj = myService.objProp;
})
Run Code Online (Sandbox Code Playgroud)

还要考虑绑定两个范围属性的标记

<input type="text" ng-model="str">
<input type="text" ng-model="obj.content">
Run Code Online (Sandbox Code Playgroud)

当这些值通过用户输入通过视图更新时,我的服务将仅显示对该对象所做的更改,而字符串属性保持为空.

我是否正确地假设这是由于对象是通过引用绑定而字符串不是?

javascript angularjs

5
推荐指数
1
解决办法
83
查看次数

观察ES6模块属性

我有一个模块:

var progress = {
    val: 0
};

var service = (function(){

    function someMethod(){
        progress.val++;
    }

    return{
        someMethod: someMethod
    };

})();

export {service,progress}
Run Code Online (Sandbox Code Playgroud)

someMethod将执行迭代数组的操作.我想progress.val在每次迭代时增加1.然后应该观察到这一进展:

  System.import('components/Service.js')
   .then(function(M){
            self.progress = M.progress;

           Object.observe(M.progress,function(c){
               console.dir(c);
           });
       });
Run Code Online (Sandbox Code Playgroud)

不幸的是,观察者回调只被调用一次,每次迭代持有一个项目的变化数组.

如何在每次迭代时调用回调?

javascript observer-pattern ecmascript-6 object.observe

5
推荐指数
1
解决办法
675
查看次数

AngularJS:使用回调和承诺

我无法将我的大脑包围在异步请求的概念中.

我有一个控制器用于我的视图,它是从提供者创建一个对象实例:

va.controller('VaCtrl',function($scope,$shipment){
    $scope.shipment = $shipment.Shipment();    
});
Run Code Online (Sandbox Code Playgroud)

提供者:

Shipment.provider('$shipment',function(){

    this.$get = function($http){

        function Shipment(){

        }

        Shipment.prototype.fetchShipment = function(){
            var shipment = undefined;
                $http.post('../sys/core/fetchShipment.php',{
                        // some data to POST
            }).then(function(promise){
                    shipment = promise.data;
                });

            return shipment;
        };

        return {
            Shipment: function(){
                return new Shipment();
            }
        }
    }
});
Run Code Online (Sandbox Code Playgroud)

我的目标是从Shipment.prototype.fetchShipment()我的控制器内部访问数据.我的方法:

$scope.fetchShipment = function(){
       var shipment = $scope.shipment.fetchShipment();
        console.log(shipment); // undefined
};
Run Code Online (Sandbox Code Playgroud)

但是,这将返回undefined.

我读了大约$ q,延期,承诺和回调,现在我就像WTF; 我想要做的就是将检索到的数据推送到我的控制器,这样做的最佳方法是什么?

javascript promise angularjs

4
推荐指数
1
解决办法
2万
查看次数

MongoDB/Express - 通过connect()连接后如何切换数据库

我使用express连接到我的mongoDB:

mongodb.MongoClient.connect(mongourl, function(err, database) {

      // How would one switch to another database here?

});
Run Code Online (Sandbox Code Playgroud)

我必须首先连接到管理数据库.建立连接后,我想切换数据库.

虽然我搜索了官方文档,但我无法找到符合我需求的东西.

我知道这个MongoClient::open()方法,但我想坚持connect().

任何帮助表示赞赏.

javascript mongodb express

3
推荐指数
2
解决办法
2777
查看次数