2015-10-24 4 views
23

मैं परीक्षण डेटाबेस को पॉप्युलेट करने के लिए अपना प्रारंभिक माइग्रेशन बनाने की कोशिश कर रहा हूं लेकिन मैं इसे काम नहीं कर सकता। यह वही है मैं अपने प्रवास में है:अनुक्रमित माइग्रेशन/बीजों का उपयोग करके प्रारंभिक डेटा कैसे सम्मिलित करें?

'use strict'; 

module.exports = { 
    up: function (queryInterface, Sequelize) { 
    return [ 
     queryInterface.bulkInsert('Users', [ 
     { username: "user1" }, 
     { username: "user2" } 
    ])]; 
    }, 

    down: function (queryInterface, Sequelize) { 
    return queryInterface.dropTable('Users'); 
    } 
}; 

और मैं इस त्रुटि मिलती है:

== 20151024144833-create-conjugation: migrating ======= 
{ [SequelizeUniqueConstraintError: Validation error] 
    name: 'SequelizeUniqueConstraintError', 
    message: 'Validation error', 
    errors: [], 
    fields: [] } 

यह करने के लिए एक आसान तरीका होना चाहिए। मैंने अन्य SO प्रश्नों की जांच की है, लेकिन वाक्यविन्यास अनुक्रमित के वर्तमान संस्करण में बदल गया है।

अद्यतन

ठीक है, मैं अपने गलती का एहसास: मैं यह सोचते गया था कि sequelize टाइम स्टांप की देखभाल करेंगे। इससे समस्या हल हो:

up: function (queryInterface, Sequelize) { 
    console.log(User); 
    return [ 
    queryInterface.bulkInsert('Users', [ 
     { username: "user1", createdAt: Date.now(), updatedAt: Date.now() }, 
     { username: "user2", createdAt: Date.now(), updatedAt: Date.now() } 
    ]) 
    ]; 
} 

लेकिन अगर यह मेरा डेटाबेस बीज के लिए सही रास्ता है मैं अभी भी सोच रहा हूँ। User.create({}) का उपयोग कर ऐसा करने का कोई तरीका है?

+5

मैं 'तिथि में समस्या आई। अब() 'और इसे 'नई तिथि()' के साथ प्रतिस्थापित करने की आवश्यकता है। SQLite का उपयोग करना, डेटाबेस से क्वेरी करना संभव नहीं था, क्योंकि समय गलत प्रारूप में सहेजा गया था ('Uncaught TypeError: date.indexOf 'sequelize/lib/dialects/sqlite/data-type.js में फ़ंक्शन नहीं है: 28: 14') – wegenerd

उत्तर

3

एक विकल्प का उपयोग किया जा सकता है: sequelize fixtures, आप जेएसएस फ़ाइल या अन्य प्रारूप के रूप में घोषित डिफ़ॉल्ट डेटा के साथ अपनी तालिकाओं को जोड़ सकते हैं।

1
new Date() 

पर

const City = sequelize.define('city', { 
    name: { type: Sequelize.STRING }, 
    order_: { type: Sequelize.INTEGER } 
}); 
City.sync().then(() => { 
    City.create({ 
    name: 'Neuquen', 
    order_: 0 
    }); 
    City.create({ 
    name: 'General Roca', 
    order_: 1 
    }); 
}); 

या पढ़ें "माइग्रेशन" के बारे में भी, mysql के लिए आवश्यक यानी

return queryInterface.bulkInsert('users', [ 
    { 
    "Forename":"A", 
    "Surname": "User", 
    "UserType":"1", 
    "Email":"[email protected]", 
    "Password":"password", 
    "LastLogin":0, 
    "Tokens": JSON.stringify({"tokens":[]}), 
    "CreatedBy": 999, 
    "CreatedAt": new Date(), 
    "UpdatedAt": new Date() 
    }]); 
संबंधित मुद्दे