2017-11-28 5 views
0

私はユーザスキーマと投稿スキーマを持っています。ユーザーが持っているすべての投稿を '/ post/dashboard'というルートに戻したいと思います。ここでMongooseはどこの文書を見つけますかfield = req.body.user

は私のスキーマです:だから

let UserSchema = new Schema({ 
    username: { 
     type: String, 
     required: true, 
     unique: true, 
    }, 
    password: { 
     type: String, 
     default: null, 
    }, 
    profile_pic: { 
     type: String, 
     default: '/img/profilepic.png', 
    }, 
    posts: { 
     type: mongoose.Schema.Types.ObjectId, 
     ref: 'Post' 
    } 
}) 
let PostSchema = new Schema({ 
    title: { 
     type: String, 
    }, 
    description: { 
     type: String, 
    } 
    original_poster: { 
     type: Schema.Types.ObjectId, 
     ref: 'User', 
     required: true 
    }, 
    tags: { 
     type: [String] 
    } 
}) 

、例えばのようなもの:ある何

SELECT * FROM POSTS WHERE ORIGINAL_POSTER = <req.session.user> 

app.get('/', (req,res) => { 
    Post.find({ original_poster: req.session.user }).then((posts) =>{ 
     res.send(JSON.stringify(posts)); 
    }) //where req.session.user is an id (the logged in user's object id or _id) 
}) 

は基本的にSQL構文で、それはのようなものかもしれませんreq.session.userによってすべての投稿を返す適切な方法?

答えて

1

req.session.userが文字列として格納されている場合original_posterフィールドは、あなたがobjectIDにキャストする必要があり、ユーザーのモデルへの参照を表しているようだ:

const mongoose = require('mongoose'); 

... 

let userId = mongoose.Types.ObjectId(req.session.user); 
Post.find({ original_poster: userId }).then((posts) => { 
    res.send(JSON.stringify(posts)); 
}); 
関連する問題