我编写了一个非常简单的CRUD API,我最近开始编写一些使用的测试chai,chai-http但是在运行我的测试时遇到了问题$ mocha.
当我运行测试时,我在shell上收到以下错误:
TypeError: app.address is not a function
以下是我的一个测试(/tests/server-test.js)的示例:
var chai = require('chai');
var mongoose = require('mongoose');
var chaiHttp = require('chai-http');
var server = require('../server/app'); // my express app
var should = chai.should();
var testUtils = require('./test-utils');
chai.use(chaiHttp);
describe('API Tests', function() {
before(function() {
mongoose.createConnection('mongodb://localhost/bot-test', myOptionsObj);
});
beforeEach(function(done) {
// I do stuff like populating db
});
afterEach(function(done) {
// I do stuff like deleting populated db
}); …Run Code Online (Sandbox Code Playgroud) 标题不言自明......我有几种形式,其中一种只是一个文本输入形式,另一种是由两个文本输入组成.我不希望其中任何一个提交按钮,我希望每当用户在任何文本输入处按下ENTER按钮时提交每个表单:
是否有办法使具有多个文本输入的表单以这种方式运行并避免在其中设置提交按钮?
我的问题非常简短.我是TypeScript的新手,一直在这里和那里搜索,但没有找到答案.
有经验的TypeScripter是否知道是否有字符类型或简单的方法来实现一个?
我正在开发一个带有Ionic Framework的应用程序,我只想在一些具体视图中显示侧边菜单,但不是在每个视图中都显示.
我有我的menu.html文件:
<ion-side-menus>
<ion-pane ion-side-menu-content>
<ion-nav-bar class="bar-positive nav-title-slide-ios7">
</ion-nav-bar>
<ion-nav-view name="menuContent" animation="slide-left-right"></ion-nav-view>
</ion-pane>
<ion-side-menu side="left">
<ion-content class="mymenu">
<div id="menu-list">
<ion-list class="list">
<ion-item item-type="item-icon-left" nav-clear menu-close href="#">
<i class="icon ion-home"></i><span>Menu Item</span>
</ion-item>
...
</ion-list>
</div>
</ion-content>
</ion-side-menu>
</ion-side-menus>
Run Code Online (Sandbox Code Playgroud)
我的index.html的body标签看起来像这样:
<body ng-app="myApp">
<ion-nav-view></ion-nav-view>
</body>
Run Code Online (Sandbox Code Playgroud)
我设置应用程序的JavaScript代码说明:
.config(function($stateProvider, $urlRouterProvider) {
$stateProvider
.state('app', {
url: "/app",
abstract: true,
templateUrl: "templates/menu.html",
controller: 'AppCtrl'
})
.state('app.page1', {
url: "/page1",
views: {
'menuContent' :{
templateUrl: "templates/page1.html"
}
}
}) …Run Code Online (Sandbox Code Playgroud) 我从服务器上获得了很好的JSON数据,但是当尝试使用ng-repeat指令在我的页面上列出它时会出现问题.
这是我的HTML正文内容,只要$ http.get()方法接收到请求的数据,'mydata'(JSON数组)就会正确显示,但ng-repeat没有列出数组元素:
<body ng-app="myapp">
<div ng-controller="MyController" >
Data from server: {{ mydata }}
</div>
<hr>
<ul ng-controller="MyController as controller">
<li ng-repeat="data in controller.mydata">
{{ data }}
</li>
</ul>
</body>
Run Code Online (Sandbox Code Playgroud)
这是Javascript代码:
var URI = 'http://my_service_uri/';
angular.module("myapp", [])
.controller("MyController", function($scope, $http) {
$scope.mydata = [];
$http.get(URI)
.then(function(result) {
$scope.mydata = result.data;
});
});
Run Code Online (Sandbox Code Playgroud) 给定以下两个具有@ManyToMany关系的TypeORM实体:
@Entity({ name: 'products' })
export class ProductEntity {
@PrimaryColumn()
id: number;
@Column()
name: string;
@ManyToMany(type => CategoryEntity, { eager: true })
@JoinTable({ name: 'products_categories' })
categories: CategoryEntity[];
}
Run Code Online (Sandbox Code Playgroud)
@Entity({ name: 'categories' })
export class CategoryEntity {
@PrimaryColumn({ length: 40 })
code: string;
}
Run Code Online (Sandbox Code Playgroud)
结果,我创建了一个名为"products_categories"以下列名称的表:
productsId categoriesCode有没有办法给这两列自定义名称?我想将它们重命名如下:
productsId -> productIdcategoriesCode -> categoryCode我使用JAX-RS(Jersey 2.0)实现了一个小型REST API,我使用AJAX来调用API,GET和POST工作正常但是当我调用任何PUT或DELETE方法时,我得到的是以下内容错误信息:
无法加载资源:服务器响应状态为403(禁止)
这是Java中DELETE方法的一个示例:
@Path("/deleteSomething")
@DELETE
@Consumes("application/json")
public void delete(String json) throws ParseException {
JSONParser parser = new JSONParser();
Object obj = parser.parse( json );
JSONObject object=(JSONObject)obj;
String id = (String) object.get("id");
System.out.println("ID : " + id);
//DO SOMETHING HERE
}
Run Code Online (Sandbox Code Playgroud)
这是使用AJAX的Javascript调用:
function deleteSomethingAjax() {
$.ajax({
url: API_URI + "/deleteSomething", //API_URI is the API's uri
contentType : 'application/json',
data: idToJSON(), // this function just returns a JSON obj {"id":"myID"}
type: 'DELETE',
success : function(data, textStatus, jqXHR) { …Run Code Online (Sandbox Code Playgroud) 服务器端:Spring框架
我有一个Spring Controller,它有一个返回类型的方法ResponseEntity<String>.
对于完全好的请求,我返回以下内容:
return new ResponseEntity<>(OK_MESSAGE, new HttpHeaders(), HttpStatus.OK);
Run Code Online (Sandbox Code Playgroud)
但是如果在执行或异常捕获期间出现任何问题,我会返回:
return new ResponseEntity<>(ERROR_MESSAGE, new HttpHeaders(), HttpStatus.BAD_REQUEST);
Run Code Online (Sandbox Code Playgroud)
其中ERROR_MESSAGE包含每种类型的Exception catched的自定义String.
客户端:AJAX调用
当调用该POST方法并返回HttpStatus.OK,AJAX时
success: function (data, message, xhr)
Run Code Online (Sandbox Code Playgroud)
被调用,我可以OK_MESSAGE通过访问轻松访问String data.
该问题涉及的是POST方法返回HttpStatus.BAD_REQUEST,AJAX
error: function (xhr, status, errMsg)
Run Code Online (Sandbox Code Playgroud)
被调用,但我无法访问ERROR_MESSAGE服务器发送的字符串,我需要向用户显示.
有什么建议?
我是新手Node.js,我想知道是否有一种JavaScript从Node shell 中执行文件的方法.让我用这种方式解释一下:
而不是这样做:
$ node file.js
这将执行脚本,但之后将关闭Node shell ...
有没有办法在Node shell中执行一个脚本?就像是:
$ node
> file.js # We're now inside the Node.js shell
... script execution...
> # already inside the shell,
# then being able to access to script variables
Run Code Online (Sandbox Code Playgroud) 我是新手Promises,我一直在阅读Q文档,其中说:
当你到达承诺链的末尾时,你应该返回最后的承诺或结束链.
我已经在我的代码中定义了一个Promise Q.Promise,使用以下console.log命令注销执行跟踪:
function foo(){
return Q.Promise(function(resolve, reject) {
doSomething()
.then(function() {
console.log('1');
return doSomething1();
})
.then(function() {
console.log('2');
return doSomething2();
})
.then(function() {
console.log('3');
return doSomething3();
})
.catch(function(err) {
console.log('catch!!');
reject(err);
})
.done(function() {
console.log('done!!');
resolve();
});
});
}
Run Code Online (Sandbox Code Playgroud)
如果每个都doSomethingN()正确执行,一切都按预期工作,我得到预期的跟踪:
1
2
3
done!!
Run Code Online (Sandbox Code Playgroud)
但如果任何doSomethingN()失败:
foo()工作正常,因为错误函数回调是每当reject(err)发生时运行的回调:
foo().then(function() { /* */ }, function(err) { /* this runs! */ });
我得到以下跟踪(即doSomething1()失败时):
1 …Run Code Online (Sandbox Code Playgroud)