- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我是 backbone.js 的新手,正在开发一个基于 node.js 的 Backbone 前端和后端示例项目。我有两个实体:后端中的 User
和 Bank
以及与这两个具有相同名称的模型对应的 backbone.js 模型。 User
和Bank
具有一对一 关系。
bank 模型的 urlroot 是 /bank
,相应的 user 也是 /user
。现在的问题。用户可能有也可能没有与他相关联的银行实体。因此,当拥有银行账户的用户登录时,主干模型加载与登录用户对应的银行。
如果活跃用户没有关联银行,我将如何处理银行的 backbone.js 模型?目前,如果用户没有与他关联的银行,我将返回 null。我觉得这不是正确的做法。感谢您在这方面提供的任何帮助。
/bank
路由对应的code是
app.get("/bank/:id?", function(req, res) {
if (!req.user) {
return JsonRenderer.error(null, res, 401, false);
}
return Bank.findById(req.user.id, function(err, bank) {
if (err) {
console.error(err);
}
if (bank) {
return res.json(JsonRenderer.user(bank));
}
if (!bank) {
return JsonRenderer.error('No User', res, 200, false);
}
});
});
最佳答案
我想如果它能满足您的需求,那就没问题了。但我认为这是一个关于语义以及语义如何塑造逻辑的有趣问题,所以我会给出我的答案,看看是否有人对此有更好的思考方式。我也想学点东西。
根据我在您的描述中读到的内容,我对这个问题的看法略有不同。即,您对 null 的使用以及如何将其作为响应进行处理。
在我看来,没有在数据库中输入银行帐户的人将是undefined
。没有任何定义。这将是喜欢的人,刚刚创建了一个帐户但还没有达到那个部分。明确表示他们没有银行账户的人可能是 null
,这是一个代表“无”的对象。有些人不想在他们的数据库列中混合使用这两者。关于差异有很多争论,显然这是一个非常 JS 的东西,让非 JS 程序员狂热。 ;-)
鉴于此,我认为这里缺少某种步骤,即在您请求资源(银行)之前知道您是否应该费心去请求它。例如,如果 User
和 Bank
是一对一的,您可以考虑在 User
中通过 id 或 null 或 undefined 添加一些对 Bank 的引用> 对象。这样,当您获得 User 时,您可以查看是否需要延迟加载银行信息(如果有关联的话)。如果为 null(或未定义),则不需要。如果它有一个像 user.get('bankID');
这样的 BankID,那么您可以使用 model.id = bankID
创建一个空模型,然后使用 .fetch ()
。因此,您只需在需要时创建一个 Bank 模型。现在您的成功
错误
回调不必处理两个问题 - 确定 Bank 是否存在,以及确定 User。这是一种 RESTful,因为纯形式的 URL 是关于我们想要的资源的。在请求资源之前,我们可能想知道我们是否想要该资源。听起来你正在创建一个 Bank 模型,然后获取它但不知道是否有一个。所以你最终得到了一个默认银行。这可能还不错。它可能只是银行的空洞代表。在这种情况下,也许另一种思考方式是每个人都有银行,只是一些银行信息已经填写,而其他人没有。就像,我可能没有填写我的个人资料,但我可能仍然有一个在我注册时为我创建的个人资料对象。 :-)
还有另一种思考方式。也就是说,也许银行应该有某种指向用户的指针。使用旧的 Backbone 分支的 Parse.com 使用这种方法。基本上我可能有类似 Bank.user
的东西指向 User
模型/对象。所以在客户端,我的用户被加载,然后我查询一个包含指向我想要的用户的指针的 Bank 对象。如果找不到任何内容,Parse 中的此查询只会返回未定义的,但如果它与基于用户的查询匹配,则会返回银行。
无论如何,我认为这是一个有趣的问题。
关于javascript - urlroot 返回 null 时的 Backbone.js 模型处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31510300/
这些是我的服务器的路径 URL: GET /watchlists GET /watchlists/:id POST /watchlists // Create a new watchlists PUT
当我尝试覆盖模型的 urlRoot 属性并对该模型进行提取时,urlRoot 实际上将整个函数作为字符串返回。下面是重写的 urlRoot 的样子: urlRoot: function() { r
我无法理解 urlRoot 在 Backbone.js 中的工作原理。我正在尝试从 NodeJS/MongoDB 后端获取具有特定 _id 的任务。 我不太清楚如何将 id 属性传递到 URI 中。我
地点:htdocs -api.roamingcamper(RESTful + CodeIgnter) - Backbone Site = Backbone.Model.extend({ urlRoot
假设我有一个 Person 模型/集合,如下所示; define([ 'base/BaseModel' ], function(BaseModel) { var Person = Ba
我需要在运行时将 urlRoot 传递给模型,因为模型的几个不同类使用不同的 urlRoot。 这是我的模型: App.Models.Table = Backbone.Model.extend({ }
使用 backbone.js 我有一个特殊情况,我需要在创建模型时将实际的 urlRoot 动态传递给模型。 这是我尝试过但没有运气的方法: var reward = new Reward({url
我很困惑 - 我以为我的模型绑定(bind)工作正常,但它只是作为带有伪造的 ajax 请求的 jsFiddle 。我已将模型绑定(bind)到 View ,如果我重写 .fetch() 并伪造响应,
我是 backbone.js 的新手,正在开发一个基于 node.js 的 Backbone 前端和后端示例项目。我有两个实体:后端中的 User 和 Bank 以及与这两个具有相同名称的模型对应的
我正在做一些练习来熟悉 Backbone。我正在尝试使用 Model 的 urlRoot 属性从我的服务器获取 JSON 文件。 当我输入 urlRoot: "./js/json/todo" 时,我收
我是一名优秀的程序员,十分优秀!