Azure Function OpenAPI - Error same key has already been added - azure

I have a problem implementing OpenAPI in an Azure Function.
I am using the following package
Microsoft.Azure.WebJobs.Expensions.OpenApi
This is the error:
An item with the same key has already been added. Key: result_list`1
The cause is because I have several functions that are returning the same type CustomCollection<T>
How could you implement a solution for this issue?

Before inserting a data into a custom generic collection (CustomCollection<T>) try to remove/delete previous values or after got a values from function remove/delete the values in a CustomCollection<T>. This can helps to avoid conflict.
Try to use multiple CustomCollection<T> with different names can solve the problem.
Add a key value with some prefix or suffix characters while inserting.
Eg: Actual Key : result_list you can use as result_list_fun1 or fun1_result_list

Related

accessing nested objects in mongo using node.js

I'm unable to access a nested object in a mongo doc. None of the online solutions or even mongo documentation has been able to resolve my problem.
{
characterName:character.characterName,
0:{slotName:"", slotCount:0},
1:{slotName:"", slotCount:0},
2:{slotName:"", slotCount:0},
3:{slotName:"", slotCount:0}
}
I want to access any of the numbered keys via an api and change the value of slotCount.
I've tried everything I could find online including the below.
db.Inventories.updateOne(
{characterName:user.selectedCharacter.CharacterName},
{$set:{[req.query.slotNumber].0.slotCount:req.query.itemCount}}
);
I'm getting syntax errors from VSCode as it's not expecting a period . after the first key on the last line of code.
SOLUTION: create a var that stores a string
key =`${req.query.slotNumber}.slotCount`
and then use square brackets when calling the key
db.Inventories.updateOne(
{characterName:user.selectedCharacter.CharacterName},
{$inc:{[key]:-1}}

Problem accesing a dictionary value on dialogflow fullfilment

I am using fullfilment section on dialogflow on a fairly basic program I have started to show myself I can do a bigger project on dialogflow.
I have an object setup that is a dictionary.
I can make the keys a constant through
const KEYS=Object.keys(overflow);
I am going through the values using
if(KEYS.length>0){
var dictionary = overflow[keys[i]]
if I stringify dictionary using
JSON.stringify(item);
I get:
{"stack":"overflow","stack2":"overflowtoo", "stack3":3}
This leads me to believe I am actually facing a dictionary, hence the name of the variable.
I am accesing a string variable such as stack and unlike stack3
Everything I have read online tells me
dictionary.stack
Should work since
JSON.stringify(item);
Shows me:
{"stack":"overflow","stack2":"overflowtoo","stack3":3}
Whenever I:
Try to add the variable to the response string.
Append it to a string using output+=${item.tipo};
I get an error that the function crashed. I can replace it with the stringify line and it works and it gives me the JSON provided so the issue isnt there
Dictionary values are created as such before being accessed on another function:
dictionary[request.body.responseId]={
"stack":"overflow",
"stack2":"overflowtoo",
"stack3":3 };
Based on the suggestion here I saw that the properties where being accessed properly but their type was undefined. Going over things repeatedly I saw that the properties where defined as list rather than single values.
Dot notation works when they stop being lists.
Thanks for guiding me towards the problem.

Puppet write a command that runs if lookup succeeds?

I have the following in my puppet manifest and it works:
package {
lookup('latest_packages'): ensure => latest,
}
Now we are adding another option to ensure absent, this lookup can contain values but it can also be non-existent. When the hiera data doesn't exists it causes my manifest to fail.
package {
lookup('latest_packages'): ensure => absent,
}
If that data doesn't exists I get back this on the agent:
Error: Could not retrieve catalog from remote server: Error 500 on
SERVER: Server Error: Function lookup() did not find a value for the
name 'removed_packages' on node dev-596e89d2fe5e08410003f2e6
How can I set this up to run only if lookup finds values? Do I need to wrap the package function in a conditional?
The fastest path to success here is probably to make use of the default value argument to the lookup function. We can also add in the data type and merge behavior just to help focus the lookup:
lookup('removed_packages', Array[String], 'unique', [])
Also, based on your error message I am guessing the key you are looking up is actually removed_packages for the absent case.
Array[String]: data type that guarantees your package list will be an array of strings. This helps protect against undesired inputs to this resource from your data.
unique: Combines any number of arrays and scalar values to return a merged and flattened array with all duplicate values removed. This is nice and efficient.
[]: the default value, so that for a nonexistent removed_packages key the resource will resolve to:
package { []: ensure => absent }
which will be a benign and successfully compiled resource in your catalog.

Array to function parameters

I'm using the node.js Redis library and I'm attempting to bulk-subscribe to many keys. I've got an array which is dynamic i.e
var keys {'key1','key2',...,'keyN'}
and I want to feed each index in as parameters to subscribe in the Redis library which takes one or more string(s). I've tried the apply function in JS using..
redisClient.subscribe.apply(this,keys);
but it doesn't cause a subscription. Any suggestions on how I can get over this issue?
Your example data is totally invalid JS, but I'm assuming you have it correct in your code.
You need to set the proper function context:
redisClient.subscribe.apply(redisClient, keys);

Subsonic - Bit operation in Where Clause

I'm trying to make something like this:
int count = new Select().From(tblSchema).Where("Type & 1").IsEqualTo("1").GetRecordCount();
And the error message is:
Incorrect syntax near '&'.
Must declare the scalar variable "#Deleted".
Is it possible to do that with SubSonic?
Must declare the scalar variable
"#Deleted"
The second error would be caused by using logical deletes on the table you are querying (the table has an isDeleted or Deleted column).
But I'm looking through the code, I'm not sure how that parameter is getting in there. The SqlQuery.GetRecordCount method doesn't call CheckLogicalDelete(), from what I can tell. Is that error message unrelated?
This seems to be a bug in the way SubSonic is naming it's parameters when it generates the SQL to be executed.
What's happening is that SubSonic is looking at "Type & 1" and then creating a parameter to compare against called #Type&10 which is not a valid SQL parameter name. So you'll end up with the following SQL from your original query. You should submit a bug to http://code.google.com/p/subsonicproject/
Meanwhile you can workaround the bug for now by using an inline query:
http://subsonicproject.com/docs/Inline_Query_Tool
It is a little fuzzy as to what you are trying to accomplish but here is a best guess.
int count = new Select().From(tbl.Schema).Where(tbl.TypeColumn).IsEqualTo(true).GetRecordCount();

Resources