সিক্যুয়ালাইজ ব্যবহার করে এমন নোড অ্যাপ্লিকেশনটি কীভাবে সংগঠিত করবেন?


125

আমি নোডেজ অ্যাপ্লিকেশন সন্ধান করছি যা সিক্যুয়ালাইজ ওআরএম ব্যবহার করে।

আমার মূল উদ্বেগটি হ'ল যদি প্রয়োজন হয় () নির্ভরতা লুপগুলির কারণে যদি সেই মডেলগুলির একে অপরের সাথে জটিল সম্পর্ক থাকে তবে আলাদা জেএস ফাইলগুলিতে আপনার মডেলগুলি সংজ্ঞায়িত করা অসম্ভবের পরে বলে মনে হয়। খুব সহজেই লোকেরা একটি ফাইলের মধ্যে তাদের সমস্ত মডেলগুলি সংজ্ঞায়িত করে?

আমি মডেলগুলি কীভাবে সংজ্ঞায়িত করা হয় এবং অ্যাপটির মাধ্যমে কীভাবে ব্যবহার করি সে সম্পর্কে আমি আগ্রহী am আমি কিছুটা বৈধতা পেতে চাই যে আমি নিজে যা করছি তা হল জিনিসগুলি করার "ভাল" উপায়।


2
আমি এমন একটি উদাহরণ যুক্ত করেছি যা গিথুব.শাইশাব
রায়

: আমি আমাদের সমাধান একটি নিবন্ধ লিখেছি medium.com/@ismayilkhayredinov/...
hypeJunction

উত্তর:


125

ছোট গল্প

এই ক্ষেত্রে কৌতুক মডেল আরম্ভ করতে নয় মধ্যে ফাইল কিন্তু তার আরম্ভের জন্য necesary তথ্য প্রদান করতে এবং মডেল সেটআপ এবং ইনস্ট্যান্স একটি কেন্দ্রীভূত মডিউল সাবধান হোক।

সুতরাং পদক্ষেপগুলি হ'ল:

  • ক্ষেত্র, সম্পর্ক এবং বিকল্পগুলির মতো মডেল সম্পর্কিত ডেটা সহ কয়েকটি মডেল ফাইল রাখুন।
  • একটি সিঙ্গলটন মডিউল রয়েছে যা এই সমস্ত ফাইল লোড করে এবং সমস্ত মডেল শ্রেণি এবং সম্পর্ক স্থাপন করে।
  • আপনার সিঙ্গলটন মডিউলটি app.js ফাইলে সেটআপ করুন।
  • সিঙ্গলটন মডিউল থেকে মডেল ক্লাসগুলি পান আপনার মডেল ফাইলগুলিতে ব্যবহার করবেন নাrequire , পরিবর্তে সিঙ্গলটন থেকে মডেলগুলি লোড করুন।

দীর্ঘ গল্প

এখানে সংশ্লিষ্ট উত্স কোড সহ এই সমাধানটির আরও বিশদ বিবরণ দেওয়া হল:

http://jeydotc.github.io/blog/2012/10/30/EXPRESS-WITH-SEQUELIZE.html

সম্পাদনা: এটি খুব পুরানো উত্তর! (তথ্যের জন্য নিচে পড়ুন)

এটি পুরান এবং বিভিন্নভাবে সীমাবদ্ধ!

  • প্রথমত , @ জিংস্টেস্টুলা মন্তব্যে উল্লিখিত হিসাবে (এবং আমি এটিও অভিজ্ঞতা পেয়েছি) - এই ফাইলগুলির প্রয়োজনে সমস্যা রয়েছে। এটি কারণ requireহিসাবে একইভাবে কাজ করে না readdirSync!

  • দ্বিতীয়ত - আপনি হয় খুব সম্পর্ক লিমিটেড - কোড উপলব্ধ করা হয় না অপশন ঐ সমিতির তাই তুমি অক্ষম তৈরি করতে belongsToManyযেমন প্রয়োজন throughসম্পত্তি। আপনি সর্বাধিক বেসিক এসোস করতে পারেন।

  • তৃতীয় - আপনি মডেল সম্পর্কের ক্ষেত্রে খুব সীমাবদ্ধ! আপনি যদি কোডটি নিবিড়ভাবে পড়েন, আপনি দেখতে পাবেন যে সম্পর্কগুলি একটি অ্যারের পরিবর্তে একটি অবজেক্ট , তাই আপনি যদি একই ধরণের একাধিক সংযোগ করতে চান (যেমন দুটি বার থাকার মতো ) - আপনি পারবেন না!belongsTo

  • চতুর্থ - আপনার এই সিঙ্গলটন জিনিস দরকার নেই। নোডেজে প্রতিটি মডিউল নিজেই সিঙ্গলটন, তাই এই সমস্ত কারণগুলি অকারণে জটিল।

আপনার ফার্মের উত্তর দেখতে হবে! (নিবন্ধটির লিঙ্কটি নষ্ট হয়েছে, তবে আমি সিক্যুয়ালাইজ থেকে এই সরকারী নমুনা দিয়ে এটি ঠিক করব: https://github.com/sequelize/express-example/blob/master/models/index.js - আপনি ব্রাউজ করতে পারেন কী চলছে তার একটি ধারণা পেতে পুরো প্রকল্প)।

PS আমি এই পোস্টটি এতটা উর্ধ্বমুখী হওয়ায় এটি সম্পাদনা করছি যে লোকেরা কোনও নতুন উত্তর দেখতে পাবে না (যেমনটি আমি করেছি)।

সম্পাদনা করুন: কেবলমাত্র একই পোস্টের একটি অনুলিপিটিতে লিঙ্কটি পরিবর্তন হয়েছে, তবে একটি গিথুব পৃষ্ঠায়


এছাড়াও, আমি এই ছাপে ছিলাম যে requireনোডের সমস্ত ডি মডিউলগুলি একটি অর্থে সিঙ্গেলন ছিল কারণ সেগুলির কোডটি একবার প্রয়োগ করা হয় এবং তারপরে ক্যাশে হয়, যাতে পরের বার যখন আপনি তাদের প্রয়োজন হয় তখন আপনি আ ক্যাশেড অবজেক্ট রেফারেন্স পাচ্ছেন। এটি কি পুরো ছবি নয়?
mkoryak

1
@ এমকোরিয়াক, আপনি ঠিক বলেছেন - নোডের সমস্ত সাধারণ মডিউলগুলি কার্যকরভাবে সিঙ্গেলন হয়, যেহেতু প্রথম কার্যকর হওয়ার পরে ফেরত মান ক্যাশে হয়। nodejs.org/api/modules.html#modules_caching
ক্যাসি ফ্লাইন

2
সুতরাং, উদাহরণটি সিঙ্গলটন ট্র্যাফিক অংশটি সরিয়ে সরল করা যেতে পারে এবং কেবল মডিউল.এক্সপোর্টগুলি = নতুন অর্মক্লাস () রাখুন। আমি এটি ব্যবহার করে দেখুন, আপনার প্রতিক্রিয়ার জন্য ধন্যবাদ :)
ব্যবহারকারীর 1778770

2
আমার কারও মাথা ব্যাথা থাকলে আমি আপনাকে বাঁচাতে পারি। গিথুব নিবন্ধে তালিকাভুক্ত কোডটির সাথে আমার চারপাশে কেন্দ্রিক সমস্যা ছিল। আমি একটি যোগ করতে হবে। প্রয়োজনীয়গুলিতে (যেমন: var অবজেক্ট = প্রয়োজন ('।' + মডেলপথ + "/" + নাম););) এবং ইআরআই ফাংশনে প্রতিটি ফরমে নেম.ইন্ডেক্সঅফ ('ডিএসএসটোোর')> -1 থাকলে একটি রিটার্নও রেখে দেয় (ইয়ে ওএসএক্স) আশা করি এইটি কাজ করবে.
জিঙ্গলেস্তুলা

@ জিংস্টেস্টুলা উল্লিখিত হিসাবে - ফাইলগুলি ওয়েটিং ডিরেক্টরি লোড করার জন্য নমুনাতে কিছু পরিবর্তন / বাগ রয়েছে (বিশেষত এটি অন্য কোথাও নেস্টেড থাকলে)। আমি সম্পর্কের ক্ষেত্রে বিকল্পগুলি পাস করার ক্ষমতাও যুক্ত করব, কারণ এগুলি অত্যন্ত গুরুত্বপূর্ণ (যেমন বিদেশী কী এর নাম, যদি এটি বাতিল হওয়ার অনুমতি দেওয়া হয় ইত্যাদি)
আন্দ্রে পোপভ

96

সিকুয়েলাইজেজেএস এর ওয়েবসাইটে একটি নিবন্ধ রয়েছে যা এই সমস্যাটি সমাধান করে।

লিঙ্কটি নষ্ট হয়েছে তবে আপনি এখানে কাজের নমুনা প্রকল্পটি খুঁজে পেতে এবং এটি ব্রাউজ করতে পারেন। এটি কেন আরও ভাল সমাধান তা দেখতে উপরে সম্পাদিত উত্তর দেখুন।

নিবন্ধ থেকে নিষ্কাশন:

  • মডেল / index.js

    এই ফাইলটির ধারণা হ'ল ডাটাবেসের সাথে একটি সংযোগ কনফিগার করা এবং সমস্ত মডেল সংজ্ঞা সংগ্রহ করা। একবার সবকিছু ঠিকঠাক হয়ে গেলে, আমরা প্রতিটি মডেলের সাথে যুক্ত পদ্ধতিটি কল করব। এই পদ্ধতিটি অন্যদের সাথে মডেলকে সংযুক্ত করতে ব্যবহার করা যেতে পারে।

          var fs        = require('fs')
            , path      = require('path')
            , Sequelize = require('sequelize')
            , lodash    = require('lodash')
            , sequelize = new Sequelize('sequelize_test', 'root', null)
            , db        = {} 
    
          fs.readdirSync(__dirname)
            .filter(function(file) {
              return (file.indexOf('.') !== 0) && (file !== 'index.js')
            })
            .forEach(function(file) {
              var model = sequelize.import(path.join(__dirname, file))
              db[model.name] = model
            })
    
          Object.keys(db).forEach(function(modelName) {
            if (db[modelName].options.hasOwnProperty('associate')) {
              db[modelName].options.associate(db)
            }
          })
    
          module.exports = lodash.extend({
            sequelize: sequelize,
            Sequelize: Sequelize
          }, db)

12
সিকুয়েলাইজ এটি করার পরামর্শ দেয়। আমি এটিকে সঠিক উত্তর হিসাবে গ্রহণ করব।
jpotts18

3
এটি ভাল, তবে আপনি অন্য মডেলের উদাহরণ পদ্ধতিগুলি থেকে কোনও মডেল ব্যবহার করতে পারবেন না, বা সম্ভবত আমি কিছু মিস করেছি।
mlkmt

1
পৃষ্ঠাটির আর অস্তিত্ব নেই
মাইক চেল

1
এখানে কাজের লিঙ্কটি রয়েছে: sequelize.readthedocs.org/en/1.7.0/articles/express
ক্রিসগ 86

3
@ এমএমকেএমটি আপনি পারবেন! আপনার যেহেতু sequelizeআপনার মডেল ফাইলে ভেরিয়েবল অ্যাক্সেস রয়েছে তাই আপনি অন্য মডেলটি দিয়ে এতে অ্যাক্সেস করতে পারবেন sequelize.models.modelName
গিলহর্ম শেহন

29

এই সমস্যাটি মোকাবেলায় লোকদের সহায়তা করার জন্য আমি একটি প্যাকেজ সিক্যুয়ালাইজ-সংযোগ তৈরি করেছি । এটি সিকুইলাইজের প্রস্তাবিত সম্মেলনটি এখানে অনুসরণ করেছে: http://sequelize.readthedocs.org/en/1.7.0/articles/express/

অতিরিক্তভাবে এটি ইন্টারফেসের ক্ষেত্রে মঙ্গুজের মতো আরও কিছুটা কাজ করে। এটি আপনাকে যেখানে আপনার মডেলগুলি অবস্থিত সেগুলির একটি সেট নির্দিষ্ট করার অনুমতি দেয় এবং এটি আপনাকে আপনার মডেল ফাইলগুলির সাথে মেলে একটি পছন্দসই ম্যাচিং ফাংশন সংজ্ঞায়িত করতে দেয়।

ব্যবহারটি মূলত এর মতো:

var orm = require('sequelize-connect');

orm.discover = ["/my/model/path/1", "/path/to/models/2"];      // 1 to n paths can be specified here
orm.connect(db, user, passwd, options);                        // initialize the sequelize connection and models

তারপরে আপনি মডেলগুলি অ্যাক্সেস করতে পারেন এবং সিক্যুয়ালাইজ করতে পারেন:

var orm       = require('sequelize-connect');
var sequelize = orm.sequelize;
var Sequelize = orm.Sequelize;
var models    = orm.models;
var User      = models.User;

আশা করি এটি কাউকে সাহায্য করবে।


3
কোনও নিবন্ধের সাথে লিঙ্ক করা কিছুটা সহায়তা করে। কিছু ডক্সের উদ্ধৃতি দেওয়া ভাল। একটি কোড স্নিপেট দেখানো দুর্দান্ত .... তবে আসলে সমস্যাটি সমাধান করে এমন একটি লাইব্রেরি তৈরি করা এবং এটি এনপিএম-এ স্থাপন করা দুর্দান্ত এবং আরও ভালবাসার দাবিদার! +1 এবং আপনার প্রকল্পের তারাঙ্কিত হবে।
স্টিজন ডি উইট

9

আমি এক্সপ্রেস.জেএস অ্যাপে সিকুয়ালাইজ ব্যবহার শুরু করেছি। আপনি যে প্রকৃতির বর্ণনা দিচ্ছেন তা নিয়ে শীঘ্রই যথেষ্ট পরিমাণে ছড়িয়ে পড়ে। সম্ভবত আমি সিক্যুইলাইজকে বেশ বুঝতে পারি নি, তবে আমার কাছে কেবল একটি টেবিল থেকে নির্বাচন করা বেশি সুবিধাজনক ছিল না। এবং যেখানে আপনি সাধারণত দুটি বা ততোধিক টেবিল বা খাঁটি এসকিউএল-তে একটি ইউনিয়ন ব্যবহার করেন, আপনাকে পৃথক অনুসন্ধান চালাতে হবে এবং নোডের অ্যাসিঙ্ক প্রকৃতির সাথে এটি কেবল জটিলতা যুক্ত করেছে।

অতএব আমি সিকুয়ালাইজ ব্যবহার থেকে সরে এসেছি। তদুপরি আমি মডেলগুলিতে ডিবি থেকে যে কোনও তথ্য আনা ব্যবহার থেকে স্যুইচ করছি। আমার মতে ডেটা পুরোপুরি পাওয়া বিমূর্ত করা ভাল। এবং কারণগুলি হ'ল ধারণা করুন - আপনি কেবল মাইএসকিউএল ব্যবহার করবেন না (আমার ক্ষেত্রে আমি মাইএসকিউএল এবং মঙ্গোডিবি পাশাপাশি থাকি) তবে আপনি কোনও ডেটা সরবরাহকারী এবং যেকোন পরিবহন পদ্ধতি, যেমন এসকিউএল, নো-এসকিউএল, থেকে আপনার ডেটা পেতে পারেন ফাইল সিস্টেম, বাহ্যিক এপিআই, এফটিপি, এসএসএইচ ইত্যাদি আপনি যদি মডেলগুলিতে এগুলি করার চেষ্টা করেন তবে শেষ পর্যন্ত আপনি জটিল এবং জটিল কোডটি তৈরি করবেন যা আপগ্রেড এবং ডিবাগ করা শক্ত to

এখন কি আপনি কি করতে চান মডেলের একটি স্তর যে জানে কোথায় এবং কিভাবে এটি পেতে থেকে তথ্য পেতে আছে, কিন্তু আপনার মডেল শুধুমাত্র এপিআই পদ্ধতি, যেমন ব্যবহার fetch, save, deleteইত্যাদি এবং এই স্তর ভিতরে আপনি নির্দিষ্ট তথ্য সরবরাহকারীদের জন্য নির্দিষ্ট বাস্তবায়নের আছে। উদাহরণস্বরূপ আপনি কোনও স্থানীয় মেশিনে বা ফেসবুক এপিআই থেকে অথবা আমাজন এডাব্লুএস থেকে অথবা দূরবর্তী এইচটিএমএল ডকুমেন্ট, ইত্যাদি থেকে কোনও পিএইচপি ফাইল থেকে নির্দিষ্ট ডেটা অনুরোধ করতে পারেন etc.

PS এই ধারণাগুলির কিছু আর্কিটেক্ট থেকে ক্লাউড 9 দ্বারা ধার করা হয়েছিল : http://events.yandex.ru/talks/300/


এই বৈধ যুক্তি আছে, কিন্তু আমি বরং reimplementing এড়াতে হবে fetch, save, deleteইত্যাদি বাইরে Sequelizeদেওয়া যে ফ্রেমওয়ার্ক ইতিমধ্যে সুবিধা উপলব্ধ করে। এটি সুন্দর, তবে পৃথক আনার স্তর রাখার পক্ষে কম সুবিধাজনক। একই সময়ে, আপনি সম্ভবত সিকুইলাইজের চারপাশে একটি আনয়ন বিমূর্ত স্তর যোগ করতে পারেন তবে সমাধানটি আরও জটিল, তর্কযোগ্য জয়ের জন্য।
জোড়ায়ার

এই টিউটোরিয়ালটি খুব হেল্পফুল হতে হবে: সিক্যুয়ালাইজ + এক্সপ্রেস উদাহরণ
লুকাস দো অমরাল

@ mvbl-fst আপনি সবেমাত্র একটি ডিএও স্তর বর্ণনা করেছেন। ধরা যাক আপনার এসকিউএল ডিবিতে কিছু ব্যবহারকারী এবং ফাইল সিস্টেমের বিভিন্ন ব্যবহারকারী রয়েছে। আপনার দুটি ডিএও থাকা উচিত যা এগুলির প্রতিটি কীভাবে পাবেন তা বিমূর্ত করে, তারপরে একটি ব্যবসায়ের স্তর যা ব্যবহারকারীদের একত্রে সম্মিলিত করে (এমনকি কিছু সম্পত্তি অ্যাডাপ্ট করে) এবং সেগুলি আপনার রুটে ফেরত দেয় (উপস্থাপনা স্তর)।
ডিজেড্যাভমার্ক

5

আমি এটিকে ফার্ম হিসাবে সেট আপ করেছি এবং ডকুমেন্টেশন বর্ণনা করে।

তবে আমার অ্যাডিটোনাল সমস্যা ছিল যে আমার উদাহরণ পদ্ধতি এবং ক্লাস পদ্ধতিগুলিতে প্রতিটি ফাংশনে আমি মডেলগুলির সাথে সংযুক্ত করব আমার অন্যান্য ডাটাবেস অবজেক্টগুলি ধরে রাখতে সূচি ফাইলের প্রয়োজন হবে।

এটিকে সমস্ত মডেলের অ্যাক্সেসযোগ্য করে সমাধান করে।

var Config = require('../config/config');

 var fs = require('fs');
var path = require('path');
var Sequelize = require('sequelize');
var _ = require('lodash');
var sequelize;
var db = {};

var dbName, dbUsername, dbPassword, dbPort, dbHost;
// set above vars

var sequelize = new Sequelize(dbName, dbUsername, dbPassword, {
dialect: 'postgres', protocol: 'postgres', port: dbPort, logging: false, host: dbHost,
  define: {
    classMethods: {
        db: function () {
                    return db;
        },
        Sequelize: function () {
                    return Sequelize;
        }

    }
  }
});


fs.readdirSync(__dirname).filter(function(file) {
   return (file.indexOf('.') !== 0) && (file !== 'index.js');
}).forEach(function(file) {
  var model = sequelize.import(path.join(__dirname, file));
  db[model.name] = model;
});

Object.keys(db).forEach(function(modelName) {
  if ('associate' in db[modelName]) {
      db[modelName].associate(db);
  }
});

module.exports = _.extend({
  sequelize: sequelize,
  Sequelize: Sequelize
}, db);

এবং মডেল ফাইল

var classMethods = {
  createFromParams: function (userParams) {
    var user = this.build(userParams);

    return this.db().PromoCode.find({where: {name: user.promoCode}}).then(function (code) {
        user.credits += code.credits;
                return user.save();
    });
  }

};

module.exports = function(sequelize, DataTypes) {
  return sequelize.define("User", {
  userId: DataTypes.STRING,
}, {  tableName: 'users',
    classMethods: classMethods
 });
};

আমি এটি কেবল ক্লাসের পদ্ধতিগুলির জন্যই করেছি তবে উদাহরণ পদ্ধতিগুলির জন্য আপনি একই জিনিসটি করতে পারেন।


+1 প্রোটোটাইপ শ্রেণীর জন্য মেঠোড যে ডিবি ফেরত দেয়। ঠিক আমি যে ধারনাটি খুঁজছিলাম তখন সংজ্ঞা দেওয়ার সময় ক্লাসমঠগুলি লোড করতে সক্ষম হতে পারতাম তবে ক্লাসমঠোডের কোনও মডেল (যেমন সম্পর্কগুলি অন্তর্ভুক্ত করার জন্য) উল্লেখ করতে সক্ষম হব
বিটউইট

2

আমি অফিসিয়াল গাইড অনুসরণ করছি: http://sequelizejs.com/heroku , যার একটি মডেল ফোল্ডার রয়েছে, প্রতিটি মডিউল পৃথক ফাইলে সেটআপ করে এবং সেগুলি আমদানি করতে এবং তাদের মধ্যে সম্পর্ক স্থাপনের জন্য একটি সূচী ফাইল থাকে।


লিঙ্কটি বৈধ নয়
প্রিজার

2

নমুনা মডেল সিক্যুয়ালাইজ

'use strict';
const getRole   = require('../helpers/getRole')
const library   = require('../helpers/library')
const Op        = require('sequelize').Op

module.exports = (sequelize, DataTypes) => {
  var User = sequelize.define('User', {
    AdminId: DataTypes.INTEGER,
    name: {
      type: DataTypes.STRING,
      validate: {
        notEmpty: {
          args: true,
          msg: 'Name must be filled !!'
        },
      }
    },
    email: {
      type: DataTypes.STRING,
      validate: {
        notEmpty: {
          args: true,
          msg: 'Email must be filled !!'
        },
        isUnique: function(value, next) {
          User.findAll({
            where:{
              email: value,
              id: { [Op.ne]: this.id, }
            }
          })
          .then(function(user) {
            if (user.length == 0) {
              next()
            } else {
              next('Email already used !!')
            }
          })
          .catch(function(err) {
            next(err)
          })
        }
      }
    },
    password: {
      type: DataTypes.STRING,
      validate: {
        notEmpty: {
          args: true,
          msg: 'Password must be filled !!'
        },
        len: {
          args: [6, 255],
          msg: 'Password at least 6 characters !!'
        }
      }
    },
    role: {
      type: DataTypes.INTEGER,
      validate: {
        customValidation: function(value, next) {
          if (value == '') {
            next('Please choose a role !!')
          } else {
            next()
          }
        }
      }
    },
    gender: {
      type: DataTypes.INTEGER,
      validate: {
        notEmpty: {
          args: true,
          msg: 'Gender must be filled !!'
        },
      }
    },
    handphone: {
      type: DataTypes.STRING,
      validate: {
        notEmpty: {
          args: true,
          msg: 'Mobile no. must be filled !!'
        },
      }
    },
    address: DataTypes.TEXT,
    photo: DataTypes.STRING,
    reset_token: DataTypes.STRING,
    reset_expired: DataTypes.DATE,
    status: DataTypes.INTEGER
  }, {
    hooks: {
      beforeCreate: (user, options) => {
        user.password = library.encrypt(user.password)
      },
      beforeUpdate: (user, options) => {
        user.password = library.encrypt(user.password)
      }
    }
  });

  User.prototype.check_password = function (userPassword, callback) {
    if (library.comparePassword(userPassword, this.password)) {
      callback(true)
    }else{
      callback(false)
    }
  }

  User.prototype.getRole = function() {
    return getRole(this.role)
  }

  User.associate = function(models) {
    User.hasMany(models.Request)
  }

  return User;
};



1

আপনি http://sequelizejs.com/docamentation#models-import সহ অন্য ফাইলগুলি থেকে মডেলগুলি আমদানি করতে sequelize.import পারেন

এইভাবে আপনার সিক্যুয়ালাইজের জন্য একটি সিঙ্গলটন মডিউল থাকতে পারে, যা অন্য সমস্ত মডেল লোড করে।

প্রকৃতপক্ষে এই উত্তরটি ব্যবহারকারীর 1778770` এর উত্তরের মতো similar


1
এটি কি বিজ্ঞপ্তি নির্ভরতা নিয়ে কাজ করে? উদাহরণস্বরূপ, যখন মডেল এ-এর বি মডেল করার জন্য এফকে থাকে এবং মডেল এ
ম্যাকারিয়াক

1

আমি নোডেজ অ্যাপ্লিকেশন সন্ধান করছি যা সিক্যুয়ালাইজ ওআরএম ব্যবহার করে।

আপনি PEAN.JS বয়লারপ্লেট সমাধানটি দেখতে আগ্রহী হতে পারেন।

পিইএন.জেএস হ'ল একটি সম্পূর্ণ স্ট্যাক জাভাস্ক্রিপ্ট ওপেন সোর্স সমাধান, যা পোস্টগ্র্রেএসকিউএল, নোড.জেএস, এক্সপ্রেস এবং অ্যাঙ্গুলারজেএস ভিত্তিক অ্যাপ্লিকেশনগুলির জন্য একটি শক্ত প্রারম্ভিক বিন্দু সরবরাহ করে।

পিয়ান প্রকল্পটি এমইএন.জেএস প্রকল্পের একটি কাঁটাচামক (MEAN.IO বা জেনেরিক MEAN স্ট্যাকের সাথে বিভ্রান্ত হওয়ার দরকার নেই )।

পিইএন মোংগোডিবি এবং মঙ্গুজ ওআরএমকে পোস্টগ্রিসএসকিউএল এবং সিকোলেজ সহ প্রতিস্থাপন করে। MEAN.JS প্রকল্পের একটি প্রাথমিক সুবিধা হ'ল এমন একটি সংস্থা যা এটি একটি স্ট্যাককে সরবরাহ করে যার অনেকগুলি চলন্ত টুকরো রয়েছে।


আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.