可以'在GET响应中没有看到JSON字段(mongoose)

Can't see a JSON field in GET response (mongoose)

本文关键字:JSON 字段 mongoose GET 响应 可以      更新时间:2023-09-26

我有这个JSON文档(如mongolab中所示):

{
    "_id": {
        "$oid": "566e8673eb862d165fef7171"
    },
    "street": "Dizingof",
    "buildingNumber": 33,
    "apartmentNumber": 63,
    "beds": 3,
    "owner": {
        "_id": {
            "$oid": "564374944cb813541afc193a"
        },
        "local": {
            "password": "$2a$08$PtZrvLY7MWSi44gMDSjLJ.u4x.IOXIkRFZYfQhAwt.5vSIXpCYjX6",
            "email": "someemail@gmail.com"
        },
        "__v": 0
    }
}

其模式中的owner字段定义为:

owner           :  {
                type: Schema.ObjectId,
                ref: 'User'
        }

当我执行http.get以获得我收到的列表时:

{
  "_id": "566e8673eb862d165fef7171",
  "street": "Dizingof",
  "buildingNumber": 33,
  "apartmentNumber": 63,
  "beds": 3,
  "imagesAndCount": [],
  "UsersAndQuestions": []
}

为什么我不能看到/使用owner字段?我需要它来操作我的HTML文档。

编辑:这是routes.js:中的相关GET

app.get('/api/listing/:street/:buildingNumber/:apartmentNumber', function (req, res) {
        Listing.findOne(
            {
                "street": req.params.street,
                "buildingNumber": req.params.buildingNumber,
                "apartmentNumber": req.params.apartmentNumber
            }
            , function (err, listing) {
                if (err) { return next(err); }
                res.json(listing);
            });
    });

此外,我通过以下操作填充了owner字段:

var myUser = db.users.findOne()
db.listings.insert({"street" : "Dizingof", "buildingNumber" : 33, "apartmentNumber" : 63, "beds": 3, "owner": myUser})

您的问题是这个

owner :{
    type: Schema.ObjectId,
    ref: 'User'
}

Mongoose期望引用一个文档,然后使用populate(顺便说一句,它只在类型数组中工作)进行水合,因此不会将其作为查询的一部分返回。

假设你使用的是猫鼬4.2,你可以做一些类似的事情:

http://mongoosejs.com/docs/subdocs.html#altsyntax

var ownerSchema= new Schema({ name: 'string', otherProperty: 'string' });
var parentSchema = new Schema({
  owner: ownerSchema
});