我是否理解正确,如果我想查询集合,我必须执行以下操作:
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()?
我创建了一个显示工具提示的指令:
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,之前已声明并初始化?
我无法理解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)
如果不将进程重构到我的主控制器中,我该怎么做?
最近我深入研究了WebSockets的主题并构建了一个利用它们的小应用程序.
现在我想知道为什么仍在使用基于HTTP的API',或者更确切地说,为什么它们仍然被提出.
据我所知,通过HTTP可以实现WS无法做到的任何事情,但另一方面我获得了很多改进.
从HTTP驱动的后端获取比从WS后端获得更多好处的应用程序的真实世界示例是什么?
我试图确定数组是否包含某个项目.如果是,我想保留该功能,否则应该添加.
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异步执行吗?
考虑一项服务:
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)
当这些值通过用户输入通过视图更新时,我的服务将仅显示对该对象所做的更改,而字符串属性保持为空.
我是否正确地假设这是由于对象是通过引用绑定而字符串不是?
我有一个模块:
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)
不幸的是,观察者回调只被调用一次,每次迭代持有一个项目的变化数组.
如何在每次迭代时调用回调?
我无法将我的大脑包围在异步请求的概念中.
我有一个控制器用于我的视图,它是从提供者创建一个对象实例:
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; 我想要做的就是将检索到的数据推送到我的控制器,这样做的最佳方法是什么?
我使用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 ×6
angularjs ×4
mongodb ×2
data-binding ×1
ecmascript-6 ×1
express ×1
http ×1
mongoose ×1
promise ×1
web ×1
websocket ×1