我想在Node.JS中开发一个API,只有一个端点有2个参数:一个数字和一个日期时间。 此端点将在json中的MySql数据库中返回请求的结果。
但我的问题是:我不知道我是否需要在代码中定义模型。实际上,我的数据库已经创建,我已连接到它,我只需要返回一个带有2个参数的SQL请求的结果。
据我所知,我认为只需调用数据库并直接返回结果即可找到解决方案。
有可能吗?
提前谢谢!!
答案 0 :(得分:1)
不确定我是否正确理解了这个问题,但从它的外观来看,也许你必然会遇到某种形式的ORM。在任何情况下,大多数ORM或底层数据库驱动程序都允许您将原始SQL查询发送到MySQL服务器,而无需任何类型的模型或模式。
例如,使用npm中的 mysql 包(样本来自官方repo):
const Sequelize = require('sequelize');
const sequelize = new Sequelize('user', 'pwd', 'localhost', {
dialect: 'sqlite',
operatorsAliases: false,
pool: {
max: 5,
min: 0,
acquire: 30000,
idle: 10000
},
storage: 'users-review.sqlite'
});
const User = sequelize.define('user', {
id: {
type: Sequelize.INTEGER,
primaryKey: true,
autoIncrement: true
},
name: {
type: Sequelize.STRING,
allowNull: false,
unique: true
},
password: {
type: Sequelize.STRING,
allowNull: false
}
});
const Review = sequelize.define('review', {
id: {
type: Sequelize.INTEGER,
primaryKey: true,
autoIncrement: true
},
text: {
type: Sequelize.TEXT,
allowNull: false
}
});
User.hasMany(Review, {
foreignKey: 'revieweeId',
allowNull: false
});
Review.belongsTo(User, {
as: 'reviewer'
});
Review.belongsTo(User, {
as: 'reviewee'
});
sequelize.sync({
force: true
}).then(() =>
// create some users
User.bulkCreate([
{ name: 'user1', password: 'pwd1' },
{ name: 'user2', password: 'pwd2' }
])
.then(() => {
return User.findAll();
})
// and set the associations
.then(users => {
let [ user1, user2 ] = users;
return Review.create({
text: 'about user2'
})
.then(review => {
return review.setReviewer(user1).then(review => {
return review.setReviewee(user2).then(review => {
return user1.addReview(review).then(() => {
return review;
});
})
})
})
})
.then(review => {
review.getReviewer().then(u => console.log(
'reviewer', u.toJSON()));
review.getReviewee().then(u => console.log(
'reviewee', u.toJSON()));
})
.then(() => {
return User.findById(1, {
include: [ Review ]
});
})
.then(user => {
console.log('user', user.toJSON());
user.getReviews().then(reviews =>
reviews.forEach(r =>
console.log("review", r.toJSON())));
}));