在 NodeJS 中使用 Sequelize 创建"dynamic query"?



我想知道是否可以使用findOne/findOrcreate等而不是行sql query

来制作"动态条件"

我将其与GraphQl一起使用,并且参数可以是GraphQl中的选项,因此我要做的是:

如果我的ID和名称为参数:

user.findOrCreate({
      where: {
        id: args.id,
        name : args.name,  
      }
    })

如果我有ID,名称和电子邮件:

user.findOrCreate({
      where: {
        id: args.id,
        name : args.name, 
        email: args.email,
      }
    })

因此,可以在FindorCreate内部有一个参数以检查是否存在(此处为Args.email(,如果不是,则不包括在查询中吗?

您可以创建功能的功能和导入功能:

export const findOrCreate = async function (query) {
    try {
        const user = await user.findOrCreate(query);
        return user;
    } catch (e) {
        throw Error('Error occur while finding or creating the records’);
    }
};

无论您需要在哪里导入该功能并使用所需参数调用

const query = {
    where: { // we search for this user
        id: args.id,
        name : args.name, 
        email: args.email,
    },
    defaults: {
        job: 'Technical Lead JavaScript'
    }  // if it doesn't exist, we create it with this additional data
}
await findOrCreate(query )

最新更新