猫鼬 - 可能的循环依赖?

2023-12-08

我的 Express 应用程序中有以下猫鼬模型:

//dog.js
var mongoose = require("mongoose");

var dogSchema = (exports.dogSchema = mongoose.Schema({
  name: { type: String, required: true },
}));

然后我导入dog.js to my user.js

//user.js
var mongoose = require("mongoose");
var dog = require("./dog");

var userSchema = mongoose.Schema({
  user: { type: String, required: true },
  pass: { type: String, required: true },
  dogs: [dog.dogSchema],
});

现在,从我的路线中,我正在创建一个像这样的新用户:

var user = require("../models/user");
var dog = require("../models/dog");

dog = new dog.Dog(dogData);
user = new user.User(data); //this will of course contain also dogData
user.save(next);

这是进行此类操作的正确方法吗?我有一种感觉,我可能会以某种方式生成循环依赖,无论如何,它对我来说看起来不正确。关于如何创建架构来自另一个模型文件的子文档有什么想法吗?


您可以在两个方向上同时创建参考,而不会产生循环问题。使用以下命令创建从一个文档到另一文档的引用ref。来自文档:

http://mongoosejs.com/docs/populate.html

var mongoose = require('mongoose')
  , Schema = mongoose.Schema

var personSchema = Schema({
  _id     : Number,
  name    : String,
  age     : Number,
  stories : [{ type: Schema.Types.ObjectId, ref: 'Story' }]
});

var storySchema = Schema({
  _creator : { type: Number, ref: 'Person' },
  title    : String,
  fans     : [{ type: Number, ref: 'Person' }]
});

var Story  = mongoose.model('Story', storySchema);
var Person = mongoose.model('Person', personSchema);

然后您可以选择使用加载子文档populate

Story.find({ --your criteria-- })
    .populate('_creator')
    .exec(function (err, story) {../});

然后,您可以将 2 个模式存储在单独的 .js 文件中,require他们俩

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

猫鼬 - 可能的循环依赖? 的相关文章

随机推荐

  • 设置WKInterfacePicker颜色(文本或轮廓)

    有谁知道如何设置文本颜色或焦点样式轮廓颜色WKInterfacePicker 我没有看到它的界面生成器 我无法在代码中找到任何可以设置它的属性项 这是IB 您无法更改默认选择器的颜色 But you can manipulate the v
  • C 随机数生成(纯 C 代码,无库或函数)

    我需要用 C 语言生成一些随机数来测试和调试系统 该系统是一个定制硬件 SoC 功能有限 因此我只能使用基本的数学运算 不 我不能在 stdlib 或 math h 中使用随机数生成器 我需要自己写 那么有某种算法可以生成随机数吗 我知道一
  • 通过使用 htaccess 替换空格

    你好 我的 htaccess 中有这段代码
  • 通过正则表达式查找句子中的数字

    我需要一个正则表达式来查找句子中的所有数字 例如 我有3根香蕉和37个气球 我会得到 3 37 时间是20 00 我有7辆坦克 我会得到 20 00 7 将字符串拆分为 0 9 JAVA String numbers yourString
  • 如何同时编辑 ASP.NET ListView 控件中的所有行?

    我想知道如何立即将所有 ListView 行置于编辑模式 我并不是在寻找一次编辑每一行的传统行为 答案可以是 C 或 VB NET 另外 如果可能的话 请提供在编辑所有行后保存每行更改的任何示例代码 可能最简单的方法是仅使用 ListVie
  • Smartgwt selectitem键值问题

    我有一个SelectItem我通过一个填充Map具有此组合的列表网格字段内 所以很好 但是当我选择组合框中的任何项目而不是获取地图的描述或值时 会将键放入列表网格字段中 我怎样才能让我设置值而不是键 现在我尝试使用 AddChangeHan
  • 当 python 访问具有 None 值的二维列表时发出警告

    我想创建一个n npython 中的列表 其中大部分元素都用 None 初始化 然后我将在 for 循环中设置一些元素 但在该行中我将对角线元素设置为0 我得到了一个警告突出显示 j 在 PyCharm 中 说 意外类型 整数 整数 可能的
  • 无法在后台的 while 循环中发布异步任务的进度 - Android

    我想从 doInBackground 更新对话框的下载进度 我正在打印日志并发布进度 他们都没有工作 它最后更新对话框并最后一次打印所有日志值 private class DownloadEReport extends AsyncTask
  • 关键字“current_timestamp”附近的语法不正确 - 但仅限于一个数据库

    我有一个 SQL Server 2008 R2 实例 上面有多个数据库 我正在尝试在其中一个数据库 我们称之为 DB1 上运行表值函数 该函数将日期作为输入并返回相关信息表 我这样运行我的查询 SELECT FROM dbo getAllS
  • R 中的显式公式与符号导数

    我想评估某些函数的高阶导数f in R 我有两种可能性 Either I determine a general expression for f k the k th derivative of f which I can do in m
  • 64 位 Windows 上的注册表重定向

    我运行的是 64 位 Windows 并且我想创建注册表项HKCU Software Classes Wow6432Node CLSID myguid InprocServer32使用 C 我应该告诉它写入哪个注册表项 以便将其重定向到上面
  • 如何在 xslt 1.0 中求平方根

    我想在 xslt 文件中进行一些计算 并且需要在公式中进行一些平方根 有人可以指出是否可能以及如何实现吗 感谢磨坊 一个可以使用sqrt的模板 函数FXSL 一 在 XSLT 1 0 中
  • 使用内连接获取oracle中特定列值计数

    我通过加入两个表获得了一些列和值 Select tbl orderdetails category name tbl orderdetails branch name tbl ordermaster created date tbl ord
  • 有什么好的教程或书籍可以帮助您学习使用 PHP 进行信用卡处理? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 目前不接受答案 我正在寻找一本很好的教程或书籍来解释如何通过您网站上的表单处理客户的信用卡 我读过一些有关使用curl 的内容 但这不是完整的教程 我正在寻找一个课
  • 如何使用gracefulStop关闭所有grpc服务器流?

    我试图停止从服务器端连接到流服务器的所有客户端 其实我正在使用GracefulStop优雅地处理它的方法 我正在等os Interrupt在通道上发出信号以执行 gRPC 的正常停止 但它被卡住了server GracefulStop 当客
  • 如何屏蔽 URL 中的扩展名

    有没有办法使用 PHP 屏蔽我网站上页面的 URL 扩展名 例子 http home 子文件夹代替http home subfolder php 将以下内容放入网站根目录的 htaccess 文件中
  • Angular2注入的路由器未定义

    如果我将路由器从 angular router 注入到组件中然后使用它 我会收到一条错误消息 指出无法调用未定义的 navigatorByUrl 这是我使用路由器实例的组件 import Component OnInit from angu
  • Edittext 中显示多个光标

    我面临一个奇怪的问题 在我的编辑文本中 1 当用户输入任何内容时 我可以看到多个光标 2 即使用户正在输入内容 提示也可见 请参考截图 以下是布局 XML
  • 检查SQL Server中是否存在表

    我希望这是关于如何使用 SQL 语句检查 SQL Server 2000 2005 中表是否存在的最终讨论 这里有两种可能的方法 哪一种是标准 最佳方法 第一种方式 IF EXISTS SELECT 1 FROM INFORMATION S
  • 猫鼬 - 可能的循环依赖?

    我的 Express 应用程序中有以下猫鼬模型 dog js var mongoose require mongoose var dogSchema exports dogSchema mongoose Schema name type S