-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathblogs.ts
35 lines (32 loc) · 1.05 KB
/
blogs.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
import type { NextApiRequest, NextApiResponse } from 'next';
import admin from './firebase';
import { Blog } from '../../interfaces/db';
export default async function handler(req: NextApiRequest, res: NextApiResponse<Blog>) {
if (req.method == 'POST') {
const firebase = admin.firestore();
const { id, title, author, text, createdAt, owner} = req.body;
const date = admin.firestore.Timestamp.fromDate(new Date());
const data = { id, title, author, text, owner, createdAt: createdAt ?? date, updatedAt: date };
console.log('Incoming Data', {data})
return new Promise((resolve, reject) => {
firebase
.doc(`blogs/${id}`)
.set({...data})
.then(() => {
res.status(200);
res.json(data as Blog);
res.end();
resolve(data);
})
.catch(e => {
console.log(e);
res.status(405).json(e);
res.end();
reject(e);
});
});
}
res.status(403);
res.statusMessage = `${req.method} Not Allowed on this route`;
res.end();
}