여유상점_0919 : 9) Insert and Update Notices( 공지사항 )
PB.1 : Make unique key and go through loop until we find that there is no existing data that matches the unique key
I used the ( do while ) + ( continue )
but following error occurs
C:\Users\user.DESKTOP-3NN2QR0\Desktop\갭이어\GapYearCode\markets-master\server\router\admin\Admin_Notice.js:37er\router\admin\Admin_Notice.js:37
continue
^^^^^^^^
SyntaxError: Illegal continue statement: no surrounding iteration statement
do{
UniqueKey = shortid.generate()
connection.db_rest.query(`SELECT DISTINCT from notice WHERE Key = "${UniqueKey}"`,
(err, result) => {
if(err){
console.log(err)
return res.status(404).json({ message : "failed"})
}else{
// 우리가 새로 만든 unique한 key값에 해대 만약 여전히 값이 존재한다면... 새롭게 unique값 만드는 process로 다시 들어간다
if(result[0]){
console.log("Data already exist that matches the unique key")
continue
}else{
// 만약 만든 unique한 key값에 대해 값이 존재하지 않는다면 새롭게 넣으면 된다
connection.db_rest.query('INSERT INTO notice SET ?' , {
Key : UniqueKey,
Title : Title,
Writer : Writer,
Id : Id,
WriteDate : new Date(Time),
Category: Program,
Content : Content
}, (error, result) => {
if(error){
console.log("Error occurred")
console.log(error)
return res.status(404).json({ message : "failed"})
}
NoUnique = true;
return res.status(404).json({ message : 'success'})
}) // insert query
} // no existing data that matches unique key
} // no error
}) // select query
} while(NoUnique != true) // while : until we find unique key value
Trial 1: Do not Include "insert query" inside the loop
If we find out there is no data that matches the unique key, than break the loop . and then insert
PB.2 MySQL Query Error
connection.db_rest.query("SELECT DISTINCT * from notice WHERE Key = ?", [UniqueKey],
(err, result) => {
if(err){
console.log(err)
return res.status(404).json({ message : "failed"})
}else{
console.log("query ")
// 우리가 새로 만든 unique한 key값에 해대 만약 여전히 값이 존재한다면... 새롭게 unique값 만드는 process로 다시 들어간다
if(result[0]){
console.log("Data already exist that matches the unique key")
}else{
console.log("no problem")
NoUnique = true;
}
} // no error
}) // select query
ERROR
Error: ER_PARSE_ERROR: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use
near 'Key = '5218BEgMg'' at line 1
Since Selecting infos by other column ( etc. Title, Writer ) works, "Key" column seemes to be related with problem
So I Checked the "Key" Column
I tried to drop the "Key" Column but follwing Error Occurs
mysql> alter table notice drop Key;
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1
Solution : use 'backticks '
mysql> alter table notice drop column Key
;
Query OK, 0 rows affected (0.04 sec)
Records: 0 Duplicates: 0 Warnings: 0
Why?!?!
Maybe I included "white spaces" in "Key" Column
while creating that column
End
I tried to apply loop but it is not neeeded
since it is less likely that shortid library will generate same value
Author And Source
이 문제에 관하여(여유상점_0919 : 9) Insert and Update Notices( 공지사항 )), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@dhsys112/여유상점0919-9-Insert-and-Update-Notices-공지사항저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)