مروان محمود3 نشر 5 أكتوبر 2021 أرسل تقرير نشر 5 أكتوبر 2021 عند محاولة استخدام الlike في مكتبة sequelize ياتيني الخطأ Error: Invalid value { $like: '%' } الكود const posts = await Post.findAll({ where:{ title:{ $like:title_like } 1 اقتباس
0 شرف الدين حفني نشر 5 أكتوبر 2021 أرسل تقرير نشر 5 أكتوبر 2021 المعاملات النصية مثل $like, $gt, $gte, ...etc تم إلغاؤها من بعد الإصدار الخامس من مكتبة الsequelize, لإستخدام تلك المعاملات يمكنك إستخدام الوِحدة(module) Sequelize.Op والتي تمكنك من إستخدام المُعاملات على النحو التالي: const Sequelize = require('sequelize'); const Op = Sequelize.Op; const posts: = await Posts.findAll({ where: { title: { [Op.like]: '%' } } }); ومن الممكن إستخدام الأسلوب القديم في الكتابة ولكن سيعطيك هذا تحذير , ولكن بوجهٍ عام يمكنك تنفيذ الأسلوب القديم ولكن تحتاج أولاً إلى تثبيت أسماء مستعارة من أجل المُعاملات ومن ثم نقوم بتمرير تلك الأسماء إلى الإتصال الجديد القائم بين قاعدة البيانات على النحو التالي const Op = Sequelize.Op; const operatorsAliases = { $like: Op.like, $not: Op.not } const connection = new Sequelize(db, user, pass, { operatorsAliases }) اقتباس
0 Salah Eddin Beriani2 نشر 6 أكتوبر 2021 أرسل تقرير نشر 6 أكتوبر 2021 من التوثيق الرسمي لنسخة sequelize الاستخدام أصبح بهذه الطريقة للمشغلات const { Op } = require("sequelize"); Post.findAll({ where: { [Op.and]: [{ a: 5 }, { b: 6 }], // (a = 5) AND (b = 6) [Op.or]: [{ a: 5 }, { b: 6 }], // (a = 5) OR (b = 6) someAttribute: { // Basics [Op.eq]: 3, // = 3 [Op.ne]: 20, // != 20 [Op.is]: null, // IS NULL [Op.not]: true, // IS NOT TRUE [Op.or]: [5, 6], // (someAttribute = 5) OR (someAttribute = 6) // Using dialect specific column identifiers (PG in the following example): [Op.col]: 'user.organization_id', // = "user"."organization_id" // Number comparisons [Op.gt]: 6, // > 6 [Op.gte]: 6, // >= 6 [Op.lt]: 10, // < 10 [Op.lte]: 10, // <= 10 [Op.between]: [6, 10], // BETWEEN 6 AND 10 [Op.notBetween]: [11, 15], // NOT BETWEEN 11 AND 15 // Other operators [Op.all]: sequelize.literal('SELECT 1'), // > ALL (SELECT 1) [Op.in]: [1, 2], // IN [1, 2] [Op.notIn]: [1, 2], // NOT IN [1, 2] [Op.like]: '%hat', // LIKE '%hat' [Op.notLike]: '%hat', // NOT LIKE '%hat' [Op.startsWith]: 'hat', // LIKE 'hat%' [Op.endsWith]: 'hat', // LIKE '%hat' [Op.substring]: 'hat', // LIKE '%hat%' [Op.iLike]: '%hat', // ILIKE '%hat' (case insensitive) (PG only) [Op.notILike]: '%hat', // NOT ILIKE '%hat' (PG only) [Op.regexp]: '^[h|a|t]', // REGEXP/~ '^[h|a|t]' (MySQL/PG only) [Op.notRegexp]: '^[h|a|t]', // NOT REGEXP/!~ '^[h|a|t]' (MySQL/PG only) [Op.iRegexp]: '^[h|a|t]', // ~* '^[h|a|t]' (PG only) [Op.notIRegexp]: '^[h|a|t]', // !~* '^[h|a|t]' (PG only) [Op.any]: [2, 3], // ANY ARRAY[2, 3]::INTEGER (PG only) // In Postgres, Op.like/Op.iLike/Op.notLike can be combined to Op.any: [Op.like]: { [Op.any]: ['cat', 'hat'] } // LIKE ANY ARRAY['cat', 'hat'] // There are more postgres-only range operators, see below } } }); باستثناء المشغل in فيمكن استخدامه بهذه الطريقة Post.findAll({ where: { id: [1,2,3] // مثل `id: { [Op.in]: [1,2,3] }` } }); اقتباس
السؤال
مروان محمود3
عند محاولة استخدام الlike في مكتبة sequelize ياتيني الخطأ
Error: Invalid value { $like: '%' }
الكود
const posts = await Post.findAll({ where:{ title:{ $like:title_like }
2 أجوبة على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.