我想知道是否有可能(或者甚至需要)在一次调用中提供一个子文档,其中引用了它的父ID。这是我正在使用的代码:
var mongoose = require('mongoose');
var Schema = mongoose.Schema;
var LatLng = new Schema({
id: Schema.ObjectId,
created_at: Date,
accuracy: {
type: Number,
required: true
},
latitude: {
type: Number,
required: true
},
longitude: {
type: Number,
required: true
},
_walk: {
type: Schema.ObjectId,
ref: 'Walk',
required: true
}
});
LatLng.pre('save', function(next){
if(!this.created_at)
this.created_at = new Date();
});
var Walk = new Schema({
id: Schema.ObjectId,
created_at: Date,
updated_at: Date,
description: String,
elapsedTime: Number,
distance: Number,
waypoints: [LatLng],
_user: {
type: Schema.ObjectId,
ref: 'User',
required: true
}
});
Walk.pre('save', function(next){
var now = new Date();
this.updated_at = now;
if(!this.created_at)
this.created_at = now;
next();
});
Walk.pre('update', function(next){
this.updated_at = new Date();
});
Walk.pre('findOneAndUpdate', function(next){
this.updated_at = new Date();
});
Walk.pre('findByIdAndUpdate', function(next){
this.updated_at = new Date();
});
module.exports = mongoose.model('Walk', Walk);
想知道是否有某种方式(可能在LatLng.pre('save')
中)将LatLng._walk
分配给Walk.id
?
所以当我做类似的事情时:
var walk = new Walk({
description: req.body.description,
elapsedTime: req.body.elapsedTime,
distance: req.body.distance,
waypoints: req.body.waypoints,
_user: req.user._id
});
这样我就可以拨打walk.save()
,而不必遍历waypoints
并手动将_walk
分配给walk._id
我希望这是有道理的,谢谢你的帮助!
答案 0 :(得分:0)
如果您确实需要它,为什么不在此之前手动创建它并使用它保存文档。您可以自己生成ObjectId,而不是让mongo处理它。没有什么可以反对的。