续集:无法在数据库表中播种关联值

sam*_*nek 3 orm node.js sequelize.js

我正在尝试使用sequelize 将关联播种到我的数据库中,表为:用户和管理员。为此,我依赖论坛上的这个答案。所以这是我的种子:

'use strict';
const bcrypt = require('bcryptjs')
module.exports = {
    up: async (queryInterface, Sequelize) => {
        queryInterface.bulkInsert('Users', [{
            firstName: 'someone',
            lastName: 'awesome',
            email: 'someone@somewhere.com',
            password: bcrypt.hashSync('helloWorld', 8),
            type: 'admin',
            createdAt: new Date(),
            updatedAt: new Date()
        }], {});

        const users = await queryInterface.sequelize.query(
            'SELECT id from Users;'
        );

        return await queryInterface.bulkInsert('Admins', [{
            id: users[0].id,
            phone: '+9999999999',
            status: true, createdAt: new Date(),
            updatedAt: new Date()
        }]);
    },
    down: async (queryInterface) => {
        await queryInterface.bulkDelete('Admins', null, {});
        await queryInterface.bulkDelete('Users', null, {});
    }
};
Run Code Online (Sandbox Code Playgroud)

现在,用户表中的数据已完美填充,但管理表仍为空

编辑:

我尝试使用以下代码打印出 users[0].id:

const users = await queryInterface.sequelize.query(
    "SELECT id from Users"
);

console.log(users[0].id)
Run Code Online (Sandbox Code Playgroud)

输出是undefined

但数据却再次被喂入了表格!我知道这里发生了什么,但不知道如何解决!

PS我还为up的第一个方法添加了await,但这没有改变。

sam*_*nek 5

花了一段时间才弄清楚这个问题,谢谢大家。

我提到的文献: 这个问题 和 官方续集文档的这一部分

这是有效的代码:

'use strict';
const bcrypt = require('bcryptjs');
const models = require('../models');
const User = models.User;
module.exports = {
    up: async (queryInterface, Sequelize) => {
        queryInterface.bulkInsert('Users', [{
            firstName: 'aname',
            lastName: 'alastname',
            email: 'someemail@somewhere.com',
            password: bcrypt.hashSync('poochies', 8),
            type: 'admin',
            createdAt: new Date(),
            updatedAt: new Date()
        }], {});

        const user = await User.findOne({
            where: {
                type: 'admin',
                email: 'someemail@somewhere.com'
            },
        });

        return await queryInterface.bulkInsert('Admins', [{
            id: user.id,
            phone: '+999999999999',
            status: true,
            createdAt: new Date(),
            updatedAt: new Date()
        }], {});
    },
    down: async (queryInterface) => {
        await queryInterface.bulkDelete('Admins', null, {});
        await queryInterface.bulkDelete('Users', null, {});
    }
};
Run Code Online (Sandbox Code Playgroud)