**编辑:哇,我的错。我忘了从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);
});
}