如何在 mongodb atlas 中创建插入触发器?

Posted

技术标签:

【中文标题】如何在 mongodb atlas 中创建插入触发器?【英文标题】:How to create an Insert trigger in mongodb atlas? 【发布时间】:2020-08-02 04:06:15 【问题描述】:

我是 NoSQL/MongoDB 的新手,我需要在我的数据库中的一个集合上编写插入事件触发器,如下所示: 数据库名称:GiftShop 集合名称:Gifts Gifts Schema如下:-

const mongoose = require("mongoose");
const userModel = require('./userModel');
const imageModel = require('./imageModel');
const giftSchema = mongoose.Schema(
        name: String,
        availableQuantity: Number,
        price: Number,
        Seller: type: mongoose.Schema.Types.ObjectId,ref: 'UserModel',
        imageName: type: mongoose.Schema.Types.ObjectId,ref: 'ImageModel',
        deliveryInDays: Number,category: [type: String, ref: 'CategoryModel']
        , collection: "gifts");
module.exports = giftSchema;

我有另一个名为通知的集合。我想创建一个这样的触发器,一旦将新礼物插入礼物集合中,通知集合必须填充以下信息: 礼物编号, 卖家编号, 买家 ID 数组。

通知的架构如下:

const mongoose = require("mongoose");
const notificationSchema = mongoose.Schema(
        seller:  type: mongoose.Schema.Types.ObjectId,ref: 'UserModel',
        buyer: [type: mongoose.Schema.Types.ObjectId,ref: 'UserModel'],
        newGift: type: mongoose.Schema.Types.ObjectId,ref: 'GiftModel'
        , collection: "notifications");
module.exports = notificationSchema;

以下是我在 MongoDB atlas 中编写的函数,但它有很多问题:

exports = function (changeEvent) 
        const fullDocument = changeEvent;
        const buyer, seller, newGift = fullDocument;
        const collection = context.services.get("Cluster0").db("test").collection("notification");
return collection.insertOne(buyer, seller, newGift);

我在 MongoDB atlas 上为创建触发器所做的设置:

我正在通过连接到我的 MongoDB 地图集的 MongoDB 指南针插入一个新礼物,但我的通知集合没有填充通知架构中提到的数据。我哪里错了?根据我的要求编写触发器的正确​​方法是什么?谢谢。

【问题讨论】:

【参考方案1】:

有一些调试缝合函数的指针here,您应该能够按照这些指针来确定问题出在您的函数还是触发器上。

【讨论】:

嗨,奥列格,感谢您的帮助。但这对我不起作用。感谢您的帮助。

以上是关于如何在 mongodb atlas 中创建插入触发器?的主要内容,如果未能解决你的问题,请参考以下文章

如何在插入时在 SQL Server 中创建触发器?

如何在 phpmyadmin 中创建触发器,插入后将更新花药表中的字段?

无法使用 mongoose 连接到 Mongodb Atlas

如何使用 C++ 在 MongoDB 中创建地理空间索引

Mongodb Atlas 连接字符串不适用于 Zapier

Mongodb atlas + node.js 在本地工作,但在推送到 Heroku 时停止