javascript - Node.js:使用数据类型的问题
问题描述
我正在使用 AWS Lambda 在 Node.js 中开发 REST API。
下面是我的代码。我正在尝试从用户那里获取 JSON 输入并将其保存到数据库中。
const mysql = require('mysql2');
const errorCodes = require('source/error-codes');
const PropertiesReader = require('properties-reader');
const prop = PropertiesReader('properties.properties');
const con = mysql.createConnection({
host: prop.get('server.host'),
user: prop.get("server.username"),
password: prop.get("server.password"),
port: prop.get("server.port"),
database: prop.get("server.dbname")
});
exports.updateUser = (event, context, callback) => {
context.callbackWaitsForEmptyEventLoop = false;
if (event.body == null && event.body == undefined) {
var response = errorCodes.missing_parameters;
callback(null, response)
}
else {
let body = JSON.parse(event.body)
console.log("body", body);
let iduser = body.iduser;;
let first_name = body.first_name;
let created_date = body.created_date;
// allows for using callbacks as finish/error-handlers
const sql = "UPDATE user SET first_name=? created_date=? WHERE iduser=? ";
con.execute(sql, [first_name, created_date, iduser ], function (err, result) {
if (err) {
console.log(err.toString());
if (err.toString().indexOf('cannot be null') >= 0) {
var response = errorCodes.not_null_parameters;
callback(null, response);
}
var response = errorCodes.internal_server_error;
callback(null, response);
}
else {
var response = {
"statusCode": 200,
"headers": {
"Content-Type": "application/json"
},
"body": JSON.stringify({ insertId: result.insertId }),
"isBase64Encoded": false
};
callback(null, response)
}
});
}
};
这是我的 json 输入
{
"iduser": 3,
"first_name": "Ranjith",
"created_date": "2021-07-28 00:00:00",
}
现在,请注意 myiduser
始终是一个数字,first_name
是一个字符串,而 thecreated_date
是一个日期。
目前,没有数据类型验证。所以我什至可以将文本传递hello
给该created_date
字段。在那里它不会被保存,但数据库字段将设置为null
.
相反,我正在考虑在发送之前验证数据类型。所以我可以将其转换iduser
为数字、first_name
字符串和date_created
日期字段。
我有两个问题。
- 这种数据类型验证是 Node.JS 中的一个好习惯吗?我问是因为我是 Java 专家,总有特定的数据类型。
- 如果数据类型验证是一件好事,如何将上述数据转换为适当的类型?
解决方案
推荐阅读
- php - 如何使用 php 添加具有匹配合作伙伴名称的值
- java - 如何在 jar 文件中包含资源文件夹
- unix - 如何使用 awk 根据两个单独的字段数据过滤文件?
- python - 如何在网页中使用 Python 文件对数据库进行 crud 操作
- amazon-web-services - 看到 RDS 死锁错误,这可能与 IOPS 限制有关
- mysql - 提高从历史表中检索最后状态的性能
- javascript - 为什么 Vue 服务于一些基本网站而不是应用程序?
- node.js - 我想从猫鼬的集合中以相反的顺序获取文档
- c# - Unity C# - 在协程中为可寻址设置字典。值被破坏
- c# - 将 JObject 转换为动态并将单个属性提取为字符串