Sha*_*e G 4 mysql node.js express sequelize.js vue.js
使用 Sequelize ORM,我尝试更新字段 level_id,其中该字段具有指向另一个名为 level_tbl 的表中的字段 Level 的外键。
select * from level_tbl;
+----------+----------+
| level_id | Level |
+----------+----------+
| 1 | Higher |
| 2 | Ordinary |
+----------+----------+
Run Code Online (Sandbox Code Playgroud)
我的更新任务如下所示,正如您所看到的,我正在尝试使用 Sequelize 获取原始 sql 查询作为文字。
//Update task
router.put("/task/:id", (req, res) => {
if (!req.body) {
res.status(400)
res.json({
error: "Bad Data....!"
})
} else {
Task.update({
Level: req.body.Level,
Level_id: [sequelize.literal("SELECT level_id FROM level_tbl WHERE Level = 'Ordinary'")],
Year: req.body.Year,
Question: req.body.Question,
Answer: req.body.Answer,
Topic: req.body.Topic,
Sub_topic: req.body.Sub_topic,
Question_type: req.body.Question_type,
Marks: req.body.Marks,
Question_number: req.body.Question_number,
Part: req.body.Part,
Sub_part: req.body.Sub_part
}, {
where: {
id: req.params.id
}
})
.then(() => {
res.send("Task Updated")
})
.error(err => res.send(err))
}
})
Run Code Online (Sandbox Code Playgroud)
该行的正确语法是什么?
Level_id: [sequelize.literal("SELECT level_id FROM level_tbl WHERE Level = 'Ordinary'")],
Run Code Online (Sandbox Code Playgroud)
问题是我已经导入了一个模型并且可以访问全局 Sequelize 实例。因此文档中的示例不适用这种方式,即
order: sequelize.literal('max(age) DESC')
Run Code Online (Sandbox Code Playgroud)
来自https://sequelize.org/master/manual/querying.html
并且,
https://github.com/sequelize/sequelize/issues/9410#issuecomment-387141567
我定义模型的 Task.js 如下,
const Sequelize = require("sequelize")
const db = require("../database/db.js")
module.exports = db.sequelize.define(
"physics_tbls", {
id: {
type: Sequelize.INTEGER,
primaryKey: true,
autoIncrement: true
},
Level: {
type: Sequelize.STRING
},
Level_id: {
type: Sequelize.INTEGER
},
Year: {
type: Sequelize.INTEGER
},
.........
}, {
timestamps: false
}
)
Run Code Online (Sandbox Code Playgroud)
我正在使用 MEVN 堆栈 -> MySQL、Express.js、Vue.js 和 Node.js
任何帮助将不胜感激,
谢谢,
我需要在tasks.js 中再次要求Sequelize,该文件定义了快速路由。仅仅需要 Task.js 是不够的,尽管 Task.js 本身也需要续集。
const Sequelize = require('sequelize')
var express = require("express")
var router = express.Router()
const Task = require("../model/Task")
Run Code Online (Sandbox Code Playgroud)
查询周围和双引号内还需要括号,
Level_id: Sequelize.literal("(SELECT level_id FROM level_tbl WHERE Level = 'Higher')"),
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
9241 次 |
最近记录: |