我正在尝试使用来自uib-bootstrap和angular的uib-typeahead。
当我在输入类型中输入“acrel”的东西时,我希望使用mongoose和路由器从我的mongo服务器接收相同的字符串到请求参数。
当我查看服务器端时,键入的字符串显示为对象: {'0':'a','1':'c','2':'r','3':'e','4':'l'}。
我需要服务器端查询的字符串作为原始的“acrel”。
我该如何解决?
//服务器登录到“请求”
baseUrl: '',
originalUrl: '/cidades?0=a&1=c&2=r&3=e&4=l',
_parsedUrl:
Url {
....
search: '?0=a&1=c&2=r&3=e&4=l',
query: '0=a&1=c&2=r&3=e&4=l',
pathname: '/cidades',
path: '/cidades?0=a&1=c&2=r&3=e&4=l',
href: '/cidades?0=a&1=c&2=r&3=e&4=l',
_raw: '/cidades?0=a&1=c&2=r&3=e&4=l' },
params: {},
query: { '0': 'a', '1': 'c', '2': 'r', '3': 'e', '4': 'l' },
res:
ServerResponse {
//使用mongoose的服务器
'use strict';
const express = require('express');
const router = express.Router();
//const querystring = require('querystring');
const Cidade = require('../models/cidade');
const callback=function(err,data,res){
if (err) return res.status(500).json(err);
return res.status(200).send(data);
}
router.getCidade=function(req,res,next){
console.log(req);
const query=new RegExp(req.query,'i');
Cidade.find({ cidades: query }, (err,data) => {
callback(err,data,res)
})
}
module.exports=router;
//标记
<script type="text/ng-template" id="mycustomTemplate.html">
<a>{{match.model.cidade}}-{{match.model.sigla}}</a>
</script>
<div class="col-sm-5 col-lg-4">
<input name="cidade.nome" id="nome" type="text" ng-model="clinica.cidade" placeholder="Digite o nome da cidade" autocomplete="off"
uib-typeahead="cidade as cidade for cidade in getCidades($viewValue)" typeahead-loading="loadingLocations" typeahead-no-results="noResults"
class="form-control" typeahead-template-url="mycustomTemplate.html">
</div>
// angular code:
angular.module("clinang").controller('configClinicaClinicaAddClinicaCtrl',['$scope','dataService', '$state', function($scope,dataService, $state) {
$scope.clinica={};
$scope.getCidades = function(val) {
return dataService.getCidade(val).then(function(response){
return response.data;
});
};
}]);
//service
angular.module("clinang").service('dataService', ['$http','config', function ($http,config) {
var urlBase = config.baseUrl;
this.getCidade = function (where) {
return $http.get(urlBase+'/cidades', {params:where});
};
}
答案 0 :(得分:1)
params
期望一个将查询字符串名称映射到值的对象。你可能在服务中想要这样的东西:
this.getCidade = function (where) {
return $http.get(urlBase+'/cidades', { params: { cidades: where } });
};