gpt4 book ai didi

javascript - urlroot 返回 null 时的 Backbone.js 模型处理

转载 作者:搜寻专家 更新时间:2023-11-01 00:01:12 25 4
gpt4 key购买 nike

我是 backbone.js 的新手,正在开发一个基于 node.js 的 Backbone 前端和后端示例项目。我有两个实体:后端中的 UserBank 以及与这两个具有相同名称的模型对应的 backbone.js 模型。 UserBank 具有一对一 关系。

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 程序员狂热。 ;-)

鉴于此,我认为这里缺少某种步骤,即在您请求资源(银行)之前知道您是否应该费心去请求它。例如,如果 UserBank 是一对一的,您可以考虑在 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com