mirror of
https://github.com/Microsoft/sql-server-samples.git
synced 2025-12-08 14:58:54 +00:00
112 lines
3.9 KiB
JavaScript
112 lines
3.9 KiB
JavaScript
var Sequelize = require('sequelize');
|
|
|
|
var userName = 'sa';
|
|
var password = 'your_password'; // update me
|
|
var hostName = 'localhost';
|
|
var sampleDbName = 'SampleDB';
|
|
|
|
// Initialize Sequelize to connect to sample DB
|
|
var sampleDb = new Sequelize(sampleDbName, userName, password, {
|
|
dialect: 'mssql',
|
|
host: hostName,
|
|
port: 1433, // Default port
|
|
logging: false, // disable logging; default: console.log
|
|
|
|
dialectOptions: {
|
|
requestTimeout: 30000 // timeout = 30 seconds
|
|
}
|
|
});
|
|
|
|
var Polygon = sampleDB.define(
|
|
type: Sequelize.STRING,
|
|
coordinates: Sequelize.GEOMETRY.ARRAY,
|
|
geometry: Sequelize.ARRAY,
|
|
);
|
|
|
|
// Define the 'User' model
|
|
var User = sampleDb.define('user', {
|
|
firstName: Sequelize.STRING,
|
|
lastName: Sequelize.STRING
|
|
});
|
|
|
|
// Define the 'Task' model
|
|
var Task = sampleDb.define('task', {
|
|
title: Sequelize.STRING,
|
|
dueDate: Sequelize.DATE,
|
|
isComplete: Sequelize.BOOLEAN
|
|
});
|
|
|
|
// Model a 1:Many relationship between User and Task
|
|
User.hasMany(Task);
|
|
|
|
console.log('**Node CRUD sample with Sequelize and MSSQL **');
|
|
|
|
// Tell Sequelize to DROP and CREATE tables and relationships in the database
|
|
sampleDb.sync({force: true})
|
|
.then(function() {
|
|
console.log('\nCreated database schema from model.');
|
|
|
|
// Create demo: Create a User instance and save it to the database
|
|
User.create({firstName: 'Anna', lastName: 'Shrestinian'})
|
|
.then(function(user) {
|
|
console.log('\nCreated User:', user.get({ plain: true}));
|
|
|
|
// Create demo: Create a Task instance and save it to the database
|
|
Task.create({
|
|
title: 'Ship Helsinki', dueDate: new Date(2017,04,01), isComplete: false
|
|
})
|
|
.then(function(task) {
|
|
console.log('\nCreated Task:', task.get({ plain: true}));
|
|
|
|
// Association demo: Assign task to user
|
|
user.setTasks([task])
|
|
.then(function() {
|
|
console.log('\nAssigned task \''
|
|
+ task.title
|
|
+ '\' to user ' + user.firstName
|
|
+ ' ' + user.lastName);
|
|
|
|
// Read demo: find incomplete tasks assigned to user 'Anna''
|
|
User.findAll({
|
|
where: { firstName: 'Anna'},
|
|
include: [{
|
|
model: Task,
|
|
where: { isComplete: false }
|
|
}]
|
|
})
|
|
.then(function(users) {
|
|
console.log('\nIncomplete tasks assigned to Anna:\n',
|
|
JSON.stringify(users));
|
|
|
|
// Update demo: change the 'dueDate' of a task
|
|
Task.findById(1).then(function(task) {
|
|
console.log('\nUpdating task:',
|
|
task.title + ' ' + task.dueDate);
|
|
task.update({
|
|
dueDate: new Date(2016,06,30)
|
|
})
|
|
.then(function() {
|
|
console.log('dueDate changed:',
|
|
task.title + ' ' + task.dueDate);
|
|
|
|
// Delete demo: delete all tasks with a dueDate in 2016
|
|
console.log('\nDeleting all tasks with with a dueDate in 2016');
|
|
Task.destroy({
|
|
where: { dueDate: {$lte: new Date(2016,12,31)}}
|
|
})
|
|
.then(function() {
|
|
Task.findAll()
|
|
.then(function(tasks) {
|
|
console.log('Tasks in database after delete:',
|
|
JSON.stringify(tasks));
|
|
console.log('\nAll done!');
|
|
})
|
|
})
|
|
})
|
|
})
|
|
})
|
|
})
|
|
})
|
|
})
|
|
})
|