Mongoose:带参考的预售文档
Mongoose: presave document with reference
如果引用另一个集合的文档的_id不能立即可用,那么保存该文档的最佳做法是什么?
var ModelA = new Schema({
aUniqueIdentifer: String,
...
)};
ModelA的aUniqueIdentifier是从另一个数据源提供的,其他模型使用它来识别它
var ModelB = new Schema({
aUniqueForeignKey: type String,
aRef : {
type: mongoose.Schema.Types.ObjectID,
ref: 'ModelA'
}
)};
所以我可以保存一个模型a:modelA = new ModelA({aUniqueIdentifer: '500'});
然后,为了保存mobdelB,我需要用ModelA对象填充它的aRef。这样做的最佳做法是什么?在尝试保存之前,我应该执行findOne(aUniqueForeignKey)来返回对象吗?这似乎不是很有效。
我研究了populate,但这似乎是针对现有的引用。
您可以使用.pre方法创建一个在保存之前运行的方法,然后将您的逻辑放入其中。它看起来像这样:
ModelB.pre('save', function(next) {
// Check if id is available
// if not run another method
// run next() to exit
next();
});
这将在您保存ModelB之前运行。
希望这能有所帮助,如果你添加更多信息,我可能会提供更具体的解决方案。
您可以尝试使用populate。
填充是将文档中指定的路径自动替换为其他集合中的文档的过程
http://mongoosejs.com/docs/populate.html
相关文章:
- 使用promise和mongoose对文档进行排序
- document.open/document.write没有正确地清除chrome中的文档——这是chrome的错误吗
- Ajax请求文档就绪会导致jquery加载缓慢
- MongoDB (php) - 以数组而不是多个属性的形式返回文档属性
- 谷歌文档表面引擎
- 来自文档或下一个静态父级的事件委派
- 如何将childNodes用于XML文档
- 文档就绪提供了错误的选择器高度
- 将当前用户的 ID 推送到 meteorjs 中集合/文档的内部数组
- 未捕获的语法错误:无法在“文档”上执行“查询选择器”
- BrowserId登录请求在文档加载时被调用
- 从Javascript和Php变量创建Html模板文档
- 如何通过谷歌应用程序脚本从谷歌文档中的位置确定命名范围
- 在jquery文档准备好之前加载Modernizr
- 如何判断何时将dom节点添加到文档中
- 无法获取文档.GetElementById工作正常
- 为什么是文档.旧版应用程序中的DOM-object.properties为null
- 有没有一种方法可以在没有文档或jQuery的情况下使用javascript解码html实体
- 文档.参考工作其他页面
- Mongoose:带参考的预售文档