Skip to content
Snippets Groups Projects
Commit d667c875 authored by Franz Raumschüssel's avatar Franz Raumschüssel
Browse files

error TS2339: Property 'build' does not exist on type 'Model<TodoDoc>

parent 7e67b97d
No related branches found
No related tags found
1 merge request!5News
......@@ -58,7 +58,7 @@
"karma-jasmine": "~3.3.0",
"karma-jasmine-html-reporter": "^1.5.0",
"protractor": "~7.0.0",
"ts-node": "~8.3.0",
"ts-node": "^8.3.0",
"ts-node-dev": "^1.0.0",
"tslint": "~6.1.0",
"typescript": "^3.9.7"
......
import express from 'express';
import mongoose from 'mongoose';
import mongoose from 'mongoose'
import { json } from 'body-parser';
import { todoRouter } from './routes/todo'
......@@ -7,14 +7,14 @@ const app = express()
app.use(json())
app.use(todoRouter)
mongoose.connect('mongodb://localhost:27017/todo', {
useCreateIndex: true,
useNewUrlParser: true,
useUnifiedTopology: true
mongoose.connect('mongodb://localhost:27017/test-todo', {
useNewUrlParser: true,
useCreateIndex: true,
useUnifiedTopology: true
}, () => {
console.log('connected to database')
console.log('connected to database')
})
app.listen(3000, () => {
console.log('server is listening on port 3000')
console.log('server is listening on port 3000')
})
\ No newline at end of file
import mongoose from 'mongoose'
interface ITodo {
title: string;
description: string;
}
interface todoModelInterface extends mongoose.Model<TodoDoc> {
build(attr: ITodo): TodoDoc
}
interface TodoDoc extends mongoose.Document {
title: string;
description: string;
}
const todoSchema = new mongoose.Schema({
title: {
type: String,
required: true
},
description: {
type: String,
required: true
}
})
todoSchema.statics.build = (attr: ITodo) => {
return new Todo(attr)
}
const Todo = mongoose.model<TodoDoc, todoModelInterface>('Todo', todoSchema)
Todo.build({
title: 'some title',
description: 'some description'
})
export { Todo }
\ No newline at end of file
import express, { Request, Response} from 'express'
import express, { Request, Response } from 'express'
import { Todo } from '../models/todo'
const router = express.Router()
router.get('/api/todo', [], (req: Request, res: Response) => {
return res.send('the todo')
router.get('/api/todo', async (req: Request, res: Response) => {
const todo = await Todo.find({})
return res.status(200).send(todo)
})
router.post('/api/todo', (req, res) => {
return res.send('new todo created')
router.post('/api/todo', async (req: Request, res: Response) => {
const { title, description } = req.body;
const todo = Todo.build({ title, description })
await todo.save()
return res.status(201).send(todo)
})
export { router as todoRouter }
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment