nodejs表达猫鼬-尝试获取列表的长度作为模型中的虚拟参数作为响应

时间:2018-08-02 14:51:39

标签: node.js api express mongoose

如何在模型中使用虚拟参数,如何计算模型参数之一中列表的长度,并作为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)

1 个答案:

答案 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})