首页 > 开发 > NodeJS > 正文

关于mongoose中的保存问题

2017-09-08 17:11:35  来源:网友分享

我想要/business/:id/menus在做Post请求时,将刚刚新保存newMenus中的_id向数据库Business中的menu插入,但是,当我刚刚对一个新Menus,怎么样才能获取到它到_id

./models/business.js

...var businessSchema = new Schema({    name: {type: String, required: true},    locating: {type: String, required: true},    intro: {type: String, required: true},    menu: {type: Schema.Types.ObjectId, ref: 'Menus'},    created: {type: Date, default: Date.new },    published: {type: Boolean, default: false},    author: {type: Schema.Types.ObjectId, ref: 'Roots'}})...

./models/menus.js

...var menusSchema = new Schema({    name: {type: String, required: true},    intro: {type: String, required: true},    busines: {type: Schema.Types.ObjectId, ref: 'Business'},    created: {type: Date, default: Date.new },    published: {type: Boolean, default: false},    author: {type: Schema.Types.ObjectId, ref: 'Roots'}})...

./api/add.js

router.post('/business/:id/menus',    passport.authenticate('bearer',{session: false}),    (req,res) => {        const data = req.body;        if(!data.name || !data.intro || !data.comments) {            res.json({                success: false,                message: '数据提交不完整'            })        } else {            Busines.findOne({_id: id},(err,business) => {                const newMenus = new Menus({                    name: data.name,                    intro: data.intro,                    comments: data.comments,                    busines: id                })                newMenus.save((err) => {                    if(err) {                        return res.json({                            success: false,                            message: '保存数据失败'                        })                    }                    res.json({                        success: false,                        message: '保存数据成功'                    })                })            })            // business.menus.push()        }    })

解决方案

save有第二个参数data 就是你保存那条的信息

newMenus.save((err,data)=>{    if(!err){        console.log(data._id)    }})