如何在模型中使用虚拟参数,如何计算模型参数之一中列表的长度,并作为api调用的响应发送回去?
....服务器文件:server.js ....
//GET an ARRAY of users (and total counter of users) data via api
app.get('/api/v1/users', (req,res) => {
Userslist.find((err, userslists) => {
if (err){
res.send(err);
}else{
res.send(userslists);
}
});
});
.... MODEL文件:Users.js ....
var userslistSchema = new Schema({
items: {type: mongoose.Schema.Types.ObjectId, ref: 'ArrayOfUser'},
},{
toObject: {virtuals: true}, toJSON: {virtuals: true}
})
userslistSchema.virtual('total')
.get(function() {return this.items.length})
module.exports = mongoose.model('Userslist', userslistSchema)
答案 0 :(得分:0)
两个问题:如果应该假设项目为数组,则应定义如下。
var userslistSchema = new Schema({
items: [{type: mongoose.Schema.Types.ObjectId, ref: 'ArrayOfUser'}],
},{
toObject: {virtuals: true}, toJSON: {virtuals: true}
})
第二次定义虚拟总计。不处理项目不存在的情况。适当处理下面的示例代码。附言-这只是一个理解的样本(可以更好地处理)
userslistSchema.virtual('total')
.get(function() {return (this.items && this.items.length) ? this.items.length : 0})