Node.js 将URL参数传递到nodejs中的数据库查询中
我正在尝试将URL参数传递到SQL查询中。我有一个名为Node.js 将URL参数传递到nodejs中的数据库查询中,node.js,Node.js,我正在尝试将URL参数传递到SQL查询中。我有一个名为“puppy\u id”的列,其中一个值是puppy1。 我想调用此URL:-localhost:3000/api/puppies/puppy1 它应该在数据库SELECT*FROM puppytable WHERE puppy_id='puppy1'中执行查询并返回输出 我可以连接到数据库。但是,这表明没有返回任何数据。我想,我在执行查询时做错了什么 我的密码:- index.js var express = require('expres
“puppy\u id”
的列,其中一个值是puppy1
。
我想调用此URL:-localhost:3000/api/puppies/puppy1
它应该在数据库SELECT*FROM puppytable WHERE puppy_id='puppy1'
中执行查询并返回输出
我可以连接到数据库。但是,这表明没有返回任何数据。我想,我在执行查询时做错了什么
我的密码:-
index.js
var express = require('express');
var router = express.Router();
var db = require('../queries');
router.get('/api/puppies/:puppy_id', db.getPuppyStatus);
module.exports = router;
querys.js
module.exports = {
getPuppyStatus: getPuppyStatus
};
function getPuppyStatus(req, res, next) {
var puppyID = parseInt(req.params.puppy_id);
db.any('select * from puppytable where puppy_id =$1', puppyID)
.then(function (data) {
res.status(200)
.json({
status: 'success',
data: data,
message: 'Retrieved puppies'
});
})
.catch(function (err) {
return next(err);
});
}
querys.js
位于项目目录的根目录中。
它从这里调用index.js
var db = require('../queries');
这是我的输出:-
{"status":"success","data":[],"message":"Retrieved puppies"}
在执行console.log(pupyid)时进行调试代码>,它给了我NaN
推荐的方法是什么?我不知道req.params.family\u id
来自哪里,但它看起来应该是req.params.puppy\u id
-如下-否则它将是未定义的,与数据库中的任何内容都不匹配
function getPuppyStatus(req, res, next) {
var puppyID = req.params.puppy_id;
//call puppy_id, not family_id
//puppy_id is also a string being passed in, it can't be turned into an integer
db.any('select * from puppytable where puppy_id =$1', puppyID)
.then(function (data) {
res.status(200)
.json({
status: 'success',
data: data,
message: 'Retrieved puppies'
});
})
.catch(function (err) {
return next(err);
});
}
我看不出req.params.family_id
来自何处,但它看起来应该是req.params.puppy_id
——如下所示——否则它将是未定义的,与数据库中的任何内容都不匹配
function getPuppyStatus(req, res, next) {
var puppyID = req.params.puppy_id;
//call puppy_id, not family_id
//puppy_id is also a string being passed in, it can't be turned into an integer
db.any('select * from puppytable where puppy_id =$1', puppyID)
.then(function (data) {
res.status(200)
.json({
status: 'success',
data: data,
message: 'Retrieved puppies'
});
})
.catch(function (err) {
return next(err);
});
}
您正在转换为数字
字符串
“puppy1”。这就是您得到NaN
的原因
我不知道你专栏中的id
是什么类型的。
您有两种选择:
id
作为number
,尝试发送一个数字而不是字符串,您的代码应该可以id
作为string
,删除parseInt
var puppyID = req.params.puppy_id;
您正在转换为
数字
字符串“puppy1”。这就是您得到NaN
的原因
我不知道你专栏中的id
是什么类型的。
您有两种选择:
id
作为number
,尝试发送一个数字而不是字符串,您的代码应该可以id
作为string
,删除parseInt
var puppyID = req.params.puppy_id;
什么是
家庭id
不应该是小狗id
?而且我也看不到你的。/querys.js
文件,请确保清除inputry以删除parseInt,因为你正在传递一个字符串并试图将其转换为一个数字,返回NaN是正常的。什么是家庭id
它不应该是小狗id
?而且我也看不到你的。/querys.js
文件,请确保清除inputry以删除parseInt,因为你传递的是字符串,你试图将其转换为数字,返回NaN是正常的。我已编辑了问题。请查收。当我执行console.log(pupyid)时,仍然没有返回到调试的数据,它给了我NaN@codeclue刚才注意到您也在调用parseInt(req.params.puppy_id)
,但是puppy_id
是一个字符串(puppy1)。我更新了上面的答案。它现在正在检测参数。但是,不执行数据库query@codeclue尝试将$1
用引号括起来:db.any(“从puppytable中选择*,其中puppy\u id='$1',puppyID)
我已经编辑了这个问题。请查收。当我执行console.log(pupyid)时,仍然没有返回到调试的数据,它给了我NaN@codeclue刚才注意到您也在调用parseInt(req.params.puppy_id)
,但是puppy_id
是一个字符串(puppy1)。我更新了上面的答案。它现在正在检测参数。但是,不执行数据库query@codeclue尝试将$1
用引号括起来:db.any(“从puppytable中选择*,其中puppy\u id='$1',puppyID)