如何解决将ID主键发送到NodeMongo,Psql中的2个不同数据库
我有一个待办事项列表作业,我想用2个具有相同数据的不同DB创建它。我如何在mongo和psql中具有相同的主键。我想在后端使用UUID来实现。有基本的方法吗?抱歉,我是初学者。
这是我的addToDo的示例,我如何拥有相同的主键?
const addTodo = async (req,res,next) => {
const { content } = req.body;
const createdPlace = new Url({
content: content,enable: false,});
// Sending it To Mongo
try {
await createdPlace.save();
await pool.query("INSERT INTO todo (content,enable) VALUES ($1,$2)",[
content,false,]);
} catch (err) {
const error = new HttpError("Creating Place fails mongo");
return next(error);
}
res.sendStatus(200);
};
解决方法
默认情况下,MongoDB和Postgres处理主键的方式不同,但是您可以使它们工作相同。
在MongoDB中,主键字段称为_id,它通常由客户端生成(但可以由服务器生成),并且默认情况下是转换为特殊类型的十六进制字符串。
在Postgres主键中可以是任何字段,默认值是最常见的id,并且值通常是由服务器生成的自动递增整数。
要均衡两个数据库:
- 在客户端上创建id值。您可以使用MongoDB驱动程序生成一个新的ObjectId,将该值转换为字符串,然后在两个数据库中都使用该字符串值。
- 在Postgres中调用主键列
_id
。 - 声明字符串类型的Postgres列。
简单完美的答案。
const addTodo = async (req,res,next) => {
const { content} = req.body;
const createdPlace = new Url({
content: content,enable: false,});
// Sending it To Mongo
try {
console.log(createdPlace._id);
await createdPlace.save();
await pool.query(
"INSERT INTO todo (todo_id,content,enable) VALUES ($1,$2,$3)",[createdPlace._id,false]
);
} catch (err) {
const error = new HttpError("Creating Place fails");
return next(error);
}
res.sendStatus(200);
};
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。