2

我计划使用 mongoDB Stitch。但它提供浏览器 SDK 和服务器 SDK 的方式不同。我尝试了他们两个,我得到了一些错误。我相信这是因为我的应用程序是同构的,因为我使用的是 Next.js。请指导我在这种情况下我能做什么。

self is not defined在使用mongodb-stitch-browser-sdk时遇到错误

还有一些问题,比如Module not found: Can't resolve 'fs'使用mongodb-stitch-server-sdk

请帮忙。我也在这个网站上看到了类似的问题,没有任何答案

4

1 回答 1

0

是的,这是因为 nextjs 构建了同构应用程序。所以尝试创建 webhook 并触发 mongodb 缝合 api,或者直接使用 webhook 中的服务。这是通过stitch webhook注册使用的例子:

exports = function(payload) {
    const request = EJSON.parse(payload.body.text());
    const http = context.services.get("<app-title>");
    const owner = context.values.get("<username-of-the-app-owner>");
    const apiKey = context.values.get("<api-key>");

    return http.post({
        url: "https://stitch.mongodb.com/api/admin/v3.0/auth/providers/mongodb-cloud/login",
        body: JSON.stringify({
            username: owner,
            apiKey: apiKey
        })
    }).then(response => EJSON.parse(response.body.text()).access_token).then(accessToken => {
        return http.post({
            url: "https://stitch.mongodb.com/api/admin/v3.0/groups/<group-id>/apps/<app-id>/users",
            headers: {
                Authorization: ["Bearer " + accessToken]
            },
            body: JSON.stringify({
                email: request.useremail,
                password: request.userpass
            })
        });
    });
};

这是使用 aws s3 服务的一个:

exports = function(payload) {
    //base64EncodedImage, bucket, fileName, fileType
    const body = EJSON.parse(payload.body.text());
    // Convert the base64 encoded image string to a BSON Binary object
    const binaryImageData = BSON.Binary.fromBase64(body.picture, 0);
    // Instantiate an S3 service client
    const s3Service = context.services.get('<aws-s3-service-title>').s3('<location>');
    // Put the object to S3
    return s3Service.PutObject({
        'Bucket': '<aws-bucket-title>',
        'Key': body.fileName,
        'ContentType': body.fileType,
        'Body': binaryImageData
    })
        .then(putObjectOutput => {
            // console.log(putObjectOutput);
            // putObjectOutput: {
            //   ETag: <string>, // The object's S3 entity tag
            // }
            return putObjectOutput;
        })
        .catch(console.error);
    // return body;
};
于 2019-05-12T21:09:58.030 回答