Я пытаюсь использовать Typescript в проекте Node.js / Express, потому что я предпочитаю строгую типизацию. Тем не менее, я новичок в Typescript.
Моя цель - сохранить данные с использованием Firebase и машинописи (не облачных функций Google).
Моя архитектура выглядит следующим образом:
- API POST для
/people/create
поставляется с JSON {name: "Guy"}
- Мы создаем
Person
объект в маршрутизаторе, затем отправляем его на DatabaseManager
(write_person(person)
)
DatabaseManager
создает дружественный Firebase объект из объекта Person и отправляет его на FirebaseManager.write(FirebaseReferences.People, data)
FirebaseManager
сохраняет эти данные в firebase и возвращается к DatabaseManager
, который возвращается к вызову маршрутизатора.
router.post('/person/create', (req: Request, res: Response) => {
var person: Person = new Person(req.json...name);
var uuid: String = DatabaseManager.write_person(person);
res.send(uuid);
});
export module DatabaseManager {
export function write_person(person: Person): String {
return FirebaseManager.write(FirebaseReferences.People, person.to_dict());
}
}
export enum FirebaseReferences {
People = "/people"
}
export module FirebaseManager {
export function write(ref: FirebaseReferences, data: object): String {
try {
var new_ref: firebase.database.Reference = db.ref(ref.toString());
var uuid: String = new_ref.push(data).key;
return uuid;
} catch (error) {
console.log("FirebaseManager, write(): " + error);
throw error;
}
}
}
Я получаю следующую ошибку:
app/database_manager/FirebaseManager.ts:33:17 - error TS2322: Type 'string | null' is not assignable to type 'String'.
Type 'null' is not assignable to type 'String'.
33 var uuid: String = new_ref.push(data).key;
~~~~
[6:29:05 PM] Found 1 error. Watching for file changes.