gpt4 book ai didi

node.js - 使用 sequelize 制作具有 hasMany 关系 postgresql 的 API

转载 作者:行者123 更新时间:2023-11-29 12:42:17 24 4
gpt4 key购买 nike

我在 node.js 和 express 之上使用 sequilize,以便使用本教程创建我的 React 可以访问的 API http://mherman.org/blog/2015/10/22/node-postgres-sequelize/#.WSJ77BMrLBL .我无法让数据库填充一个名为 store with products 的对象。我现在拥有的是:

路线:

    // get all stores
router.get('/stores', function(req, res) {
models.Store.findAll({}).then(function(stores) {
res.json(stores);
});
});

// get single store
router.get('/stores/:id', function(req, res) {
models.Store.find({
where: {
id: req.params.id
}
}).then(function(store) {
res.json(store.productId);
});
});

// add new store
router.post('/stores', function(req, res) {
models.Store.create({
name: req.body.name,
productId: req.body.product_id
}).then(function(store) {
res.json(store);
});
});

商店:

    'use strict';
module.exports = function(sequelize, DataTypes) {
var Store = sequelize.define('Store', {
name: {
type: DataTypes.STRING,
defaultValue: ""
},
description: {
type: DataTypes.STRING,
defaultValue: ""
},
phone: {
type: DataTypes.STRING,
defaultValue: ""
},
email: {
type: DataTypes.STRING,
defaultValue: ""
},
image_url: {
type: DataTypes.STRING,
defaultValue: ""
},
}, {
classMethods:{
associate:function(models){
Store.hasMany(models.Product, { foreignKey: 'productId'} );
}
}
});
return Store;
}

但是当我运行 curl --data "name=test&product_id=1"http://127.0.0.1:5000/stores

我得到:{“描述”:“”,“电话”:“”,“电子邮件”:“”,“image_url”:“”,“id”:2,“name”:“test”,“updatedAt”: "2017-05-22T05:43:10.376Z","createdAt":"2017-05-22T05:43:10.376Z"} 当我导航到商店页面时,我得到了同样的东西但看不到产品编号

我做错了什么?有人可以提供一些指导吗。

谢谢!

最佳答案

Sequelize 不会预先加载产品,除非您明确告诉它包含关联的模型。将以下选项添加到您的 models.Store.findById 请求中。

const options = {
include: [{
model: models.Product
}]
};

所以它是这样写的:

models.Store.findById(req.params.id, options).then( ...

您的响应将包含一个 Products 键,它将是一个关联产品的数组。

关于node.js - 使用 sequelize 制作具有 hasMany 关系 postgresql 的 API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44124544/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com