gpt4 book ai didi

node.js - Apigee BaaS : Create multiple entities using usergrid node. js sdk 不起作用

转载 作者:太空宇宙 更新时间:2023-11-03 23:40:43 24 4
gpt4 key购买 nike

我正在使用 Apigee BaaS。从 UI(即 apigee.com/appservices)中,我可以使用 JSON 数组同时创建多个实体。例如,此处的 json 数组在集合/employees 上创建了三个实体。

    [
{
"name": "John",
"employeeId": "1"
},
{
"name": "Doe",
"employeeId": "2"
},
{
"name": "Danny",
"employeeId": "3"
}
]

现在我尝试使用nodeJs SDK - https://github.com/usergrid/usergrid/tree/master/sdks/nodejs 来模拟相同的情况。

        client.createEntity(options, function(err, entity) {
if (err) {
//error - entity not created
} else {
//set is additive, so previously set properties are not overwritten
entity.set(entityJsonArr);

//finally, call save on the object to save it back to the database
entity.save(function(err) {
if (err) {
//error - entity not saved
console.log('failure');
} else {
//success - new entity is saved
console.log('success');
}
});
}
});

这对于同时创建多个实体没有帮助。方法 createCollection 创建一个集合,而不一定是一堆实体。谁能帮我解决这个问题吗?

或者我应该继续使用请求并在 Apigee BaaS 上触发 HTTP 帖子?在这种情况下我不会使用 sdk。

最佳答案

你是对的,现有的 Node SDK 无法处理这种情况。如果您愿意并且它对您有用,我现在使用以下猴子补丁来解决此问题:

var Usergrid = require('usergrid');

Usergrid.client.prototype.batchCreate = function (type, entities, callback) {
if (!entities.length) { callback(); }

var data = _.map(entities, function(entity) {
var data = (entity instanceof Usergrid.entity) ? entity.get() : entity;
return _.omit(data, 'metadata', 'created', 'modified', 'type', 'activated');
});

var options = {
method: 'POST',
endpoint: type,
body: data
};

var self = this;
this.request(options, function (err, data) {
if (err && self.logging) {
console.log('could not save entities');
if (typeof(callback) === 'function') { callback(err, data); }
return;
}

var entities = _.map(data.entities, function(data) {
var options = {
type: type,
client: self,
uuid: data.uuid,
data: data || {}
};
var entity = new Usergrid.entity(options);
entity._json = JSON.stringify(options.data, null, 2);
return entity;
});

if (typeof(callback) === 'function') {
return callback(err, entities);
}
});
};

关于node.js - Apigee BaaS : Create multiple entities using usergrid node. js sdk 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24332628/

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