gpt4 book ai didi

javascript - Angular 中传回回调的数据未定义

转载 作者:太空宇宙 更新时间:2023-11-04 00:39:11 26 4
gpt4 key购买 nike

我在 Node.js 中有这个端点:

usersRoute.get('/get', function(req, res) {

//If no date was passed in - just use todays date

var date = req.query.date || dateFormat(new Date(), 'yyyy-mm-dd'),
search = req.query.search;

users.getAllUsers(date, search)
.then(function(results) {
res.json(results);
}, function(err) {
res.status(500).json({
success: false,
message: 'Server error.',
data: []
});
});
});

出于测试目的,我错误地命名了 SQL 表,因此它将转到 function(err){}

我的服务中的功能如下所示

function getUsers(date, search) {
return $http.get('/api/users/get', {
params: {
date: UtilsService.formatDate(date),
search: search
}
})
.then(getData)
.catch(handleErr);

function getData(response) {
console.log(response);
return response.data;
}

function handleErr(err) {
console.log(err);
LoggerService.error('Could not retrieve users.', err ,'Ooops');
return $q.reject(err);
}
}

thencatch 中的 console.log 都返回 undefined

如果有人能向我解释这是为什么,我将不胜感激。

编辑以供澄清;以下是更多后端代码:

Users.js

var sql     = require('seriate'); 
var when = require('when');

var getAllUsers = function(date, search) {
return sql.execute({
query: sql.fromFile('../sql/users/getAllUsers.sql'),
params: {
date: {
type: sql.DATE,
val: date
},
search: {
type: sql.VARCHAR,
val: search
}
}
});
}


module.exports = {
getAllUsers: getAllUsers
};

UsersApi.js

var express         = require('express');
var dateFormat = require('dateformat');
var users = require('../models/users');
var validation = require('../middleware/validation');

var usersRoute = express.Router();

//Checks for a valid token
validation.isLoggedIn(usersRoute);


usersRoute.get('/get', function(req, res) {

//If no date was passed in - just use todays date

var date = req.query.date || dateFormat(new Date(), 'yyyy-mm-dd'),
search = req.query.search;

users.getAllUsers(date, search)
.then(function(results) {
res.json(results);
}, function(err) {
res.status(500).json({
success: false,
message: 'Server error.',
data: []
});
});
});

module.exports = usersRoute;

在我的服务中,访问了then部分以及catch,并且两个对象(responseerr)都是未定义

最佳答案

可以分享一下完整的服务吗?我创建了一个plunker with your code根据您提供的示例调用我在 OpenShift 上托管的 Nodejs 服务我创建了一个模拟您的函数的方法(错误):

self.routes['/get'] = function(req, res) {
res.status(500).json({
success: false,
message: 'Server error.',
data: []
});
};

plunker 上的应用程序是:

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

app.service('UserService', function($http, $q) {
this.getUsers = function(date, search) {
return $http.get('https://nodejs-starters.rhcloud.com/get', {
params: {
date: date,
search: search
}
})
.then(getData)
.catch(handleErr);
}

function getData(response) {
console.log('status: ' + reponse.status + ' - ' + response.message);
return response.data;
}

function handleErr(err) {
console.log(JSON.stringify(err));
console.log('status: ' + err.status + ' Err= ' + err.data.message);
console.log('Could not retrieve users.', err.data.message, 'Ooops');
return $q.reject(err);
}
});

app.controller('MainCtrl', function($scope, $http, $q, UserService) {
var vm = $scope;
vm.name = 'World';
UserService.getUsers(new Date(), '*');

});

并且,控制台显示以下结果:

app.js:21 {"data":{"success":false,"message":"Server error.","data":[]},"status":500,"config":{"method":"GET","transformRequest":[null],"transformResponse":[null],"params":{"date":"2016-06-02T18:33:50.633Z","search":"*"},"url":"https://nodejs-starters.rhcloud.com/get","headers":{"Accept":"application/json, text/plain, */*"}},"statusText":"Internal Server Error"}
app.js:22 status: 500 Err= Server error.
app.js:23 Could not retrieve users. Server error. Ooops

因此调用了handleErr并定义了err。 “err.data.success”为 false,“err.data.message”为“服务器错误”。正如你在 Node.js 上写的那样。

在 plunker 示例中,您可以替换我的 URL https://nodejs-starters.rhcloud.com/get与您的比较,看看您是否得到相同的结果或不同的结果?

关于javascript - Angular 中传回回调的数据未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37598174/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com