2017-07-21 15 views
0

私はtodosアプリケーション用のRESTful APIを構築しようとしています。Mongoose RESTful api object.id ref

トドススキーム:

const mongoose = require('mongoose'); 

const TodosScheme = new mongoose.Schema({ 
    id: String 
}); 

module.exports = mongoose.model('Todos', TodosScheme); 

タスクスキーム:

const mongoose = require('mongoose'); 

const TaskScheme = new mongoose.Schema({ 
    id: String, 
    todosID: { 
     type: mongoose.Schema.Types.ObjectId, 
     ref: 'Todos' 
    }, 
    content: String, 
    isDone: Boolean 
}); 

module.exports = mongoose.model('Task', TaskScheme); 

ユーザーがタスクを作成する場合それは、いくつかのトドス項目の基準となります。私は必要なタスクを作成するには 1):

私はリスト

app.post('/api/todos/create', (req, res) => { 
    newTodos = new Todos({}); 
    newTodos.save((err, todos) => { 
     if (err) res.status(400).json(err); 
     res.json(todos); 
    }); 
}); 

トドス作成のためのルートを書き始めると、今私は私の質問があるタスク

app.post('/api/todos/create/task', (req, res) => { 
    const body = req.body; 
    console.log(body); 
    let newTask = new Task({ 
     todosID: body.todosID, //here i not sure! 
     content: body.content || 'no content', 
     isDone: body.isDone || false 
    }); 

    newTask.save((err, task) => { 
     if (err) res.status(400).json(err); 
     res.json(task); 
    }); 
}); 

を作成するためにルートを書いてみます3つのパラメータを渡す:

コンテンツ:クライアントはリクエストからパスします

isDone:クライアントはリクエストからパスします

todosID:X?クライアント?それは最善の方法ですか?

2)クライアントがtodosIDに渡す必要がある場合、これはタスクスキームで必須である必要がありますか? ユーザが今todosIDなしでタスクを作成すると、彼は参照なしにタスクを作成するためです。

3)スキームのtodosアプリを書く良い方法がありますか? ありがとうございました:)

答えて

0

/api/todos/create返品作成todosオブジェクトです。それは_idプロパティを含む必要があります。タスクを作成するには、todos._idcontentをリクエスト本体に送信する必要があります。

+0

OKクライアントはtodos._idを送信する必要があります。したがって、作成タスクで必須である必要がありますか?それは働くには良い方法ですか? – Alin

+0

はい、クライアントは 'todos._id'を送信しなければなりません。正しい方法です。これはプライベートな情報ではなく、例えばこのstackoverflowの質問にはidがあり、あなたのコメントが追加されたときにそれをサーバーに送信しました。 – alexmac