首页 > 解决方案 > 如何在 Node.js 中使用 Sequelize for MySql 编写猫鼬的对象 id 引用

问题描述

我正在尝试使用 Sequelize 编写 MySQL 的类别模型,并参考 node(shared below) 中的 mongoose 模型代码。我浏览了一些文章,但经历了一些混乱。请帮忙。

const mongoose = require("mongoose");
const categorySchema = new mongoose.Schema(
  {
    name: {
      type: String,
      required: true,
      trim: true,
    },
    createdBy: {
      type: mongoose.Schema.Types.ObjectId,
      ref: "User",
      required: true,
    },
  },
);

module.exports = mongoose.model("Category", categorySchema);

在这里,我尝试了使用 Sequelize for MySql 的代码,但被困在 createdBy 块中。需要帮忙!!!

module.exports = (sequelize, Sequelize) => {
    const Category = sequelize.define("categories", {
        name:{
            type: Sequelize.STRING,
            required: true,
            trim: true,
        },
      createdBy:{
      
      }
    });
  
    return Category;
  };

标签: mysqlnode.jsreactjssequelize.js

解决方案


Mongo的createdBy值将是一个 ObjectID,您可以将其保存为 MySQL 中的字符串,因此DataTypes.STRING在定义中使用一个类型,然后从 Mongo 查找中将其设置为插入/更新/等。您示例中的Sequelize变量也应该是DataTypes

module.exports = (sequelize, DataTypes) => {
  const Category = sequelize.define('categories', {
    name: {
      type: DataTypes.STRING,
      required: true,
      trim: true,
    },
    createdBy: {
      type: DataTypes.STRING,
      // any other settings
    },
  });

  return Category;
};
// get the value from mongoose
const createdBy = ...;

// set it on the create for your model to insert.
await Category.create({
  name: 'Some Name',
  createdBy,
});

推荐阅读