Problem : pnp CamlQuery ergibt null
Problembeschreibung:
eine Abfrage in pnp als CamlQuery führt bei mir immer zu
einem Ergebnis null
let items_query = await list.getItemsByCAMLQuery(caml);
|
Fehlerursache:
Die list zeigt auf eine leere SharePoint Liste.
die Ursache liegt darin, dass mit lists.ensure() geprüft wird, ob in web die
benannte Liste liegt. Wenn NICHT, dann wird eine neue Liste mit dem Namen
erstellt.
const listTestExists = await sp.web.lists.ensure("Liste01");
|
Lösung
Erst die Liste holen mit der URL oder sp.web…
let subWeb= Web("https://comlinesetest.sharepoint.com/sites/Teamwebsite");
let list=subWeb.lists.getByTitle("Liste01");
|
Dann
auf diese list eine camlquery abgeben
let items_query = await list.getItemsByCAMLQuery(caml);
|
React Code Neu
//----< Get_Caml_List >----
// get the list by Id
let subWeb= Web("https://comlinesetest.sharepoint.com/sites/Teamwebsite");
let list=subWeb.lists.getByTitle("Liste01");
// build the caml query object
const caml: ICamlQuery = {
ViewXml: "<View> \
<Query> \
<Where> \
<Eq> \
<FieldRef Name='Title' /> \
<Value Type='Text'>1111</Value> \
</Eq> \
</Where> \
</Query> \
<ViewFields><FieldRef Name='Title' /></ViewFields><RowLimit>1000</RowLimit></View> "
};
// // get list items
let items_query = await list.getItemsByCAMLQuery(caml);
// log resulting array to console
console.log(items_query);
var nItems =items_query["sum1"];
console.log("Items Count=" + nItems);
//----</ Get_Caml_List >----
|
Beschreibung Alter
Code:
Ich habe schon mehrere verschiedene imports eingestellt.
import { sp,ICamlQuery } from "@pnp/sp/presets/all";
|
//----< Get_List >----
// ensure that a list exists.
const listTestExists = await sp.web.lists.ensure("Liste01");
const listID = await listTestExists.list.select("Id")();
console.log("ListID=" + listID.Id);
//----</ Get_List >----
//----< Get_Caml_List >----
// get the list by Id
const list = await sp.web.lists.getById(listID.Id);
// build the caml query object
const caml: ICamlQuery = {
ViewXml: "<View><ViewFields><FieldRef Name='Title' /></ViewFields><RowLimit>5</RowLimit></View>"
};
// get list items
let items_query = await list.getItemsByCAMLQuery(caml);
// log resulting array to console
console.log(items_query);
var nItems =items_query.Count;
console.log("Items Count=" + nItems);
//----</ Get_Caml_List >----
|
Falsche Abfrage
Abfrage nach ID mit .ensure() und dann die List holen. Dabei
zeigt aber sp.web auf den Ort wo das WebPart installiert ist.
Die Datenquelle kann ganz anders liegen
Fehler
Die CamlQuery Liste wir mit [] null zurückgeben.