Sailsjs:模型中的dynamictableName
我正在构build我的第一个sailsjs和nodejs应用程序,它非常棒:)
我的情况是,我有大约100张同样结构的桌子,我想决定“即时”加载哪张桌子。
我的第一个想法是以某种方式使用dynamic类名。 但是我不知道如何用nodejs做到这一点,也许有人有一个想法。
所以我会在模型文件夹中创build100个“modelName”.js文件。
我可以在浏览器中使用它
window["fileName"].find()....
但是我在nodejs中没有任何窗口对象
第二个想法是将tableName传递给模型,问题是,我必须重新模型,不知道如何。
任何解决scheme
find了解决办法
var modelName = req.param('p'); this[modelName].find()...
作者自己的回答是正确的,但是我会为将来使用它的人添加一些东西 – 当你使用蓝图时,你可以从req.options.model
获得modelName
。
不幸的是,你不能使用this[modelName]
作为选项给你模型的名字以小写字母开头,所以首先你必须使用例如var modelName = req.options.model.charAt(0).toUpperCase() + req.options.model.slice(1);
然后你可以自由地使用this[modelName].whateverYouNeed
我用它作为通用策略,让用户只编辑自己的组元素。
var modelName = req.options.model.charAt(0).toUpperCase() + req.options.model.slice(1) var elementID = null if (req.params.id) { // To handle DELETE, PUT elementID = req.params.id } if (req.body.id) { // To handle POST elementID = req.body.id } this[modelName].findOne({ id: elementID }).exec(function(err, contextElement) { if(err) { return res.serverError(err) } if(contextElement.group=== req.user.group.id) { sails.log('accessing own: ' + modelName) return next() } else { return res.forbidden('Tried to access not owned object') } })
另一个select,为我工作:
var modelName = "User"; global[modelName].find()....
- terminalcurl:(7)无法连接到本地主机端口3000:连接被拒绝
- 用nodejs和redis发布订阅(node_redis)
- 尝试运行一个例子吞噬的问题 – “inheritance`的超级构造函数不能为空或未定义。
- 使用edge.js有可能使.Net C#模块调用进程的node.js部分,即做反向调用吗?
- 有没有办法监视对象的变化?
- Express / Node应用程序的身份validationlogin体系结构
- Rails 5 – ActionCable – 无法升级到WebSocket
- 试图将Ember纳入Express / Bower / Grunt / Node项目
- mongodb – find()不是一个函数