访问MongoDB子文档中的文档

时间:2018-08-23 18:44:58

标签: node.js database mongodb request schema

**编辑:哇,我的错。我忘了从array.length中减去(-1)以获得数组中的最后一项。新秀错误!

我正在使用Express服务器将数据保存到我的MongoDB数据库中。我设置了一条路由,该路由接受具有以下信息的对象:

{ handle: "twitterHandle" }

该信息是根据我的架构保存的,这里:

const TwitterSchema = new mongoose.Schema({
        handle: {
            type: String,
            required: true
        }
});

其中存储在我的用户架构中,

const UserSchema = new mongoose.Schema({
    email: {
        type: String,
        required: true,
        trim: true,
        minLength: 1,
        unique: true,
        validate: {
            validator: (value) => {
                return validator.isEmail(value);
            },
            message: '{VALUE} is not a valid email'
        }
    }
    trackers: {
        tweets: {
            type: [TwitterSchema], // SUBDOCUMENT IS LOCATED HERE
            default: null
        },
        legislation: {
            type: [LegislationSchema],
            default: null
        },
        court_cases: {
            type: [CourtCaseSchema],
            default: null
        }
    }
});

通过PUSH请求将推文保存到服务器上的路由后,我想返回新保存的推文数据,该数据将是带有tweet句柄和_id属性的JSON对象,该对象由MongoDB生成。

但是,我无法访问tweets子文档中的最后一项。我该怎么做?

这是路由/api/users/me/trackers/tweets,用于处理向Twitter后端发送Twitter数据的POST请求:

const post_tweet = (req,res) => {
    User.findOne({_id: "5b7ef883c69aac4cf99acb89"}) // hard coded ID value for now...
        .then((user) => {
            user.trackers.tweets.push(req.body);
            return user.save();
        })
        .then((user) => {
            res.status(200)
                .send(user.trackers.tweets[SOMEHOW GET LAST TWEET?])
        })
        .catch((e) => {
            console.log("Request failed.")
            res.status(400).send(e);
            });
}

0 个答案:

没有答案