0

アプリケーションのスキーマ構造は次のとおりです。

var User = new Schema({
  name: {type: String, required: true},
    screen_name: {type: String, required: true, index:{unique:true}},
    email: {type: String, required: true, unique:true},
    created_at: {type: Date, required: true, default: Date}
});


var Line = new Schema({
    user: {type: Schema.ObjectId, ref: 'User'},
    text: String,
    entered_at: {type: Date, required: true, default: Date}
});


var Story = new Schema ({
    sid: {type: String, unique: true, required: true},
    maxlines: {type: Number, default: 10}, // Max number of lines per user
    title: {type: String, default: 'Select here to set a title'},
    lines: [Line],
    created_at: {type: Date, required: true, default: Date}
});


var Story = db.model('Story', Story);
var User = db.model('User', User);

sid を使用してストーリーを照会すると、そのストーリーの行だけでなく、ユーザーの screen_name も出力する必要があります。

現在、私は以下を使用してストーリーを照会しています:

app.get('/api/1/story/view/:id', function(req, res){
  Story.findOne({ sid: req.params.id }, function(err, story){
            if (err) {
            res.json(err);
        }
        else if(story == null) {
            res.json(err);
        }
        else{
        res.send(story);       
            }
        });
}); 

次のような結果が返されます。

{
  "__v": 1,
  "_id": "5117878e381d7fd004000002",
  "sid": "DIY0Ls5NwR",
  "created_at": "2013-02-10T11:42:06.000Z",
  "lines": [
    {
      "user": "511782cab249ff5819000002",
      "text": "TESTING",
      "_id": "51178795381d7fd004000003",
      "entered_at": "2013-02-10T11:42:13.000Z"
    }
  ],
  "title": "Select here to set a title",
  "maxlines": 10
}

その_idを使用したユーザー設定がありますが、ストーリーを出力する方法と、ユーザーのscreen_nameまたはユーザー情報全体を出力に含める方法が完全にはわかりません

{
  "__v": 0,
  "screen_name": "Tam",
  "email": "test@test.com",
  "name": "Tam",
  "_id": "511782cab249ff5819000002",
  "created_at": "2013-02-10T11:21:46.000Z"
}
4

1 に答える 1

1

私はそれをテストしていませんが、次のように各要素populateの完全なユーザー ドキュメントを取得するために使用できるはずです。lines

Story.findOne({sid: req.params.id})
    .populate('lines.user')
    .exec(function(err, story){ ...
于 2013-02-10T14:51:07.950 に答える