Есть разница, но тонкая. Посмотрите на это следующим образом: struct Foo
вводит новый тип. Второй создает псевдоним Foo (а не новый тип) для неназванного типа struct
.
7.1.3 Спецификатор typedef
1 [.. .]
Имя, объявленное с помощью спецификатора typedef, становится typedef-name. В пределах своей декларации имя typedef синтаксически эквивалентно ключевому слову и называет тип, связанный с идентификатором, способом, описанным в разделе 8. Таким образом, typedef-name является синонимом другого типа. Имя typedef не вводит новый тип , как это делает объявление класса (9.1) или объявление enum.
8 Если декларация typedef определяет неназванный класс (или перечисление) , первое имя typedef, объявленное объявлением как тип класса (или тип перечисления), используется для обозначения типа класса (или типа перечисления) только для целей привязки (3.5). [Пример:
blockquote>typedef struct { } *ps, S; // S is the class name for linkage purposes
Итак, typedef всегда используется в качестве заполнителя / синонима для другого типа.
Параметр res
вашей функции скрыт от возвращаемого значения res
от вызова connection.query
. Переименуйте параметр res
этого вызова на result
(например), и вы должны быть в порядке:
connection.query(insertQuery,[newUserMysql.email, newUserMysql.username, newUserMysql.password],function(err, result, rows) {
if(err){
console.log('Insert error');
//res.json({ err: 'Insert error'});
} else {
console.log('Insert successful');
return res.json({ 'success': 'Insert successful'});
//return done(null, newUserMysql);
}
});
Когда у вас есть вложенные области с конфликтующими именами переменных, переменная ближайшая (scope- мудрый), откуда вы ссылаетесь на это противоречивое имя.
Вы переопределяете res
в своей функции connection.query(insertQuery, [.....], function(err, res, rows) { ...})
.
То, что res
перекрывает res
с вашего экспресс-маршрутизатора в рамках этой функции
res.json
. Просто изменитеfunction(err, res, rows)
наfunction(err, result, rows)
. Я обновил свой ответ, чтобы избежать путаницы. – Quentin Hayot 13 July 2018 в 09:23