gpt4 book ai didi

node.js - 如何获取水线记录的模型名称或模型类?

转载 作者:搜寻专家 更新时间:2023-10-31 22:59:31 24 4
gpt4 key购买 nike

虽然与我在这里问的 a previous question 不同,但它是相关的,所以想链接它。

我一直在努力寻找如何获取记录的模型名称(标识)或模型“类”(在sails.models 中公开) .那么,给定一个 waterline 记录,我怎样才能找到它的模型名称或类?

示例(当然这里我知道模型是 User 但那只是一个示例):

User.findOne(1).exec(function(err, record) {
// at this point think that we don't know it's a `user` record
// we just know it's some record of any kind
// and I want to make some helper so that:
getTheModelSomehow(record);
// which would return either a string 'user' or the `User` pseudo-class object
});

我尝试使用 record.constructor 访问它,但那不是 User,而且我在 record 上找不到任何属性公开模型的伪类对象或记录的模型名称。

更新:澄清一下,我想要一个函数,我将向其提供任何记录,并将该记录的模型作为模型名称或模型伪类对象返回,如 sails.models 命名空间。

modelForRecord(record) // => 'user' (or whatever string being the name of the record's model)

modelForRecord(record) // => User (or whatever record's model)

最佳答案

哇,好吧,经过几个小时的研究,这是我为那些感兴趣的人做的(这是一个非常棘手的黑客,但现在无法找到另一种做事的方式):

假设 record 是您从 findOnecreate 中获得的...在回调中,找出它是什么实例是,因此找到拥有记录的模型的名称,您必须遍历所有模型 (sails.models.*) 并以这种方式调用 instanceof :

function modelFor(record) {
var model;
for (var key in sails.models) {
model = sails.models[key];
if ( record instanceof model._model.__bindData__[0] ) {
break;
}
model = undefined;
}
return model;
}

不要尝试简单地执行instanceof model,那是行不通的

如果您需要模型名称,只需modelFor(record).globalId 即可获取。

关于node.js - 如何获取水线记录的模型名称或模型类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26446206/

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